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

相关推荐
唐青枫1 天前
C#.NET Monitor 与 Mutex 深入解析:进程内同步、跨进程互斥与使用边界
c#·.net
会写代码的建筑师1 天前
.NET 控制台后台程序实践细节总结
后端·.net
阿捞22 天前
在 .NET 中使用 Moonshot Kimi + AgentFramework:从 SDK 到 Agent 的完整实践
html·.net·xhtml
步步为营DotNet2 天前
解锁.NET 11 中 Microsoft.Extensions.AI 在智能后端开发的深度应用
人工智能·microsoft·.net
无风听海2 天前
.NET10之C# 中的is null深入理解
服务器·c#·.net
bjzhang752 天前
FastReport——一个面向.NET生态的开源报表引擎
.net·fastreport
武藤一雄2 天前
C# 异常(Exception)处理避坑指南
windows·microsoft·c#·.net·.netcore·鲁棒性
步步为营DotNet2 天前
剖析.NET 11 中 Native AOT 在高性能客户端应用的极致实践
.net
步步为营DotNet2 天前
深度探索.NET Aspire在云原生应用性能与安全加固的创新实践
安全·云原生·.net
我是唐青枫2 天前
C#.NET TPL Dataflow 深入解析:数据流管道、背压控制与实战取舍
c#·.net