是否可以重载lambda表达式

本文关键字:lambda 表达式 重载 是否 | 更新日期: 2023-09-27 18:14:06

我有以下表达式,它执行一些实体(entityframework)到业务对象的映射

internal static Expression<Func<CardholderEntity, Cardholder>> ExpressionMap = entity => new Cardholder
{
    Id = entity.Id,
    CardholderNo = entity.CardholderNo,
};

但是,当我使用不同的参数创建另一个lambda表达式时:

internal static Expression<Func<AnotherCardholderEntity, Cardholder>> ExpressionMap = entity => new Cardholder
{
    Id = entity.AnotherId,
    CardholderNo = entity.AnotherCardholderNo,
};

在ExpressionMap下面有一个红色下划线表示member with same name already declared

这是可能的,或者有什么工作围绕这个?

假设我有数百个不同实体到业务对象的表达式映射,我不想为它们中的每一个都想出那么多不同的名称

是否可以重载lambda表达式

我不认为这与lambda有任何关系。你所做的基本上相当于:

internal static int x = 5;
internal static string x = "five";

这显然是行不通的。

你甚至可以去掉lambda,它仍然不能工作:

internal static Expression<Func<CardholderEntity, Cardholder>> ExpressionMap = null;
internal static Expression<Func<AnotherCardholderEntity, Cardholder>> ExpressionMap = null;

解决方案取决于应用程序的体系结构和目标是什么。但一种选择是根据类型保存它们的字典。但我不确定这是否适合你。