扩展方法+泛型+委托+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(enname) → 调用委托(传入enname(object)执行匿名方法,返回T);
  1. 实际开发优化点(必加)
    ① 加en == null判断,避免空引用;
    ② 加try-catch,处理转换失败(比如Age是"abc"转int);

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

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

相关推荐
无风听海3 小时前
.NET 10之Span技术总结
.net
1-1=04 小时前
.NET Core 配置与选项
.net·.netcore·1024程序员节
mudtools4 小时前
在飞书 SDK 上用 Microsoft Agent Framework 搭一个能干活的工作搭子
人工智能·ai·.net·飞书·agent
ChaITSimpleLove4 小时前
Layout.WatchDog.NET 1.5.0-beta.3 发布:统一全后端雪花 ID 策略,数据库能力矩阵一览
.net·watchdog·日志记录器·节点资源监控看板·.net专属轻量级日志中心
IT规划师5 小时前
MQTT 实战 - 放下炫技,8 年踩坑的真心话与方法论(收官)
物联网·.net
CSharp精选营5 小时前
.NET 接口从 800ms 干到 60ms:生产环境这几个优化点最关键
性能优化·c#·.net·efcore
CSharp精选营1 天前
制造业 ERP 物料建模:主料、辅料和 BOM 到底怎么拆才稳
.net·erp·bom·制造业·物料建模
玩泥巴的2 天前
在飞书 SDK 上用 Microsoft Agent Framework 搭一个能干活的工作搭子
ai·.net·飞书·agent
波力海苔夹心脆6752 天前
C# 委托与事件详解:委托声明、Action/Func、多播、event 与 EventHandler 入门教程
开发语言·c#·.net·上位机·委托·事件