找回密码
 立即注册
首页 业界区 业界 扩展方法+泛型+委托+Lambda 联合使用

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

能杜孱 2026-1-21 20:05:01
笔记:SetDefaultValue方法拆解(扩展方法+泛型+委托+Lambda)

  • 核心功能
    为Entity对象安全取值:指定字段名,有值则用委托转换后返回,无值/转换失败则返回默认值。
  • 白话拆解(以取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());

  • 关键语法拆解


  • 扩展方法:this Entity en → 静态类+this参数,可直接用实例调用;
  • 泛型:调用时自动推导类型(默认值"未知"→T=string,默认值0→T=int);
  • 委托Func:
    ✅ Func action → 委托容器(要求:装“接收object、返回T”的方法);
    ✅ val => val.ToString() → 匿名方法(Lambda简化写法,等价于 { return val.ToString(); });
    ✅ action(en[name]) → 调用委托(传入en[name](object)执行匿名方法,返回T);

  • 实际开发优化点(必加)
    ① 加en == null判断,避免空引用;
    ② 加try-catch,处理转换失败(比如Age是"abc"转int);
本人是一枚还没毕业的实习生,目前在一家企业实习。今天看到代码中同事写的一些封装方法,在自学过程中都有接触过,但是联合起来使用看起来却很吃力,我就想记录一下自己的成长过程,路过的大佬还望多多担待~
笔记是ai美化后的,也是想通过学习一遍,再写点笔记加点自己的想法的,但是发现还是比较冗余。谢谢大家,阿里嘎多!!!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册