扩展方法+泛型+委托+Lambda 联合使用

笔记:SetDefaultValue方法拆解(扩展方法+泛型+委托+Lambda)

  1. 核心功能

    为Entity对象安全取值:指定字段名,有值则用委托转换后返回,无值/转换失败则返回默认值。

  2. 白话拆解(以取Name为例)

    原始冗余写法:

    string name;

    if (userEntity != null && userEntity.IsNotNull("Name"))

    {

    try { name = userEntity["Name"].ToString(); }

    catch { name = "未知"; }

    }

    else

封装后写法:

string name = userEntity.SetDefaultValue("Name", "未知", val => val.ToString());

  1. 关键语法拆解
  • 扩展方法:this Entity en → 静态类+this参数,可直接用实例调用;
  • 泛型 :调用时自动推导类型(默认值"未知"→T=string,默认值0→T=int);
  • 委托Func<object, T>:
    ✅ Func<object, T> action → 委托容器(要求:装"接收object、返回T"的方法);
    ✅ val => val.ToString() → 匿名方法(Lambda简化写法,等价于 { return val.ToString(); });
    ✅ action(en[name]) → 调用委托(传入en[name](object)执行匿名方法,返回T);
  1. 实际开发优化点(必加)
    ① 加en == null判断,避免空引用;
    ② 加try-catch,处理转换失败(比如Age是"abc"转int);

本人是一枚还没毕业的实习生,目前在一家企业实习。今天看到代码中同事写的一些封装方法,在自学过程中都有接触过,但是联合起来使用看起来却很吃力,我就想记录一下自己的成长过程,路过的大佬还望多多担待~

笔记是ai美化后的,也是想通过学习一遍,再写点笔记加点自己的想法的,但是发现还是比较冗余。谢谢大家,阿里嘎多!!!

相关推荐
唐青枫16 小时前
别再层层传参了!C#.NET AsyncLocal 异步上下文透传实战
c#·.net
小邓的技术笔记20 小时前
.NET 10 使用 Microsoft.AspNetCore.OpenApi 实现 API 版本管理
.net
夏霞20 小时前
IIS 应用程序池 3 种标识:ApplicationPoolIdentity / LocalSystem / LocalService 权限区别(超清晰)
c#·.net
回忆2012初秋2 天前
Quartz.NET 全面解析与实战指南
.net
我是唐青枫2 天前
C#.NET ThreadLocal 深入解析:线程独享数据、性能收益与实战边界
c#·.net
唐青枫2 天前
别再把增删改查写成一锅粥!C#.NET CQRS 从原理到实战
c#·.net
唐青枫2 天前
C#.NET ThreadLocal 深入解析:线程独享数据、性能收益与实战边界
c#·.net
SEO-狼术3 天前
Include Scannable Barcodes in Reports
.net
qq_431280703 天前
工作经验总结:半导体上位机软件开发与互联网开发的不同
c#·.net
ironinfo3 天前
.net 高并发服务性能瓶颈排查处理
性能优化·.net·grpc