是否可以重载lambda表达式?

时间:2014-07-22 01:50:42

标签: c# .net lambda mapping overloading

我有以下表达式,它将一些实体(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

是否有可能或有任何解决方法?

假设我有数百个不同实体对业务对象的表达式映射,我不想为每个实体提出许多不同的名称

1 个答案:

答案 0 :(得分:3)

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

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

这显然不起作用。

你甚至可以摆脱lambdas,它仍然无效:

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

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