扩展方法+泛型+委托+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美化后的,也是想通过学习一遍,再写点笔记加点自己的想法的,但是发现还是比较冗余。谢谢大家,阿里嘎多!!!

相关推荐
缺点内向21 小时前
C#: 告别繁琐!轻松移除Word文档中的文本与图片水印
c#·自动化·word·.net
2501_930707781 天前
使用 C# .NET 从 PowerPoint 演示文稿中提取背景图片
c#·powerpoint·.net
向上的车轮1 天前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
波波0071 天前
每日一题:.NET 的 GC是如何分代工作的?
算法·.net·gc
波波0072 天前
每日一题:中间件是如何工作的?
中间件·.net·面试题
无风听海2 天前
.NET 10之可空引用类型
数据结构·.net
码云数智-园园2 天前
基于 JSON 配置的 .NET 桌面应用自动更新实现指南
.net
无风听海2 天前
.NET 10 之dotnet run的功能
.net
岩屿2 天前
Ubuntu下安装Docker并部署.NET API(二)
运维·docker·容器·.net
码云数智-大飞2 天前
.NET 中高效实现 List 集合去重的多种方法详解
.net