У меня есть следующее выражение, которое делает некоторую сущность (entityframework) для сопоставления бизнес-объектов
internal static Expression<Func<CardholderEntity, Cardholder>> ExpressionMap = entity => new Cardholder
{
Id = entity.Id,
CardholderNo = entity.CardholderNo,
};
Однако, когда я создаю другое лямбда-выражение, подобное этому, с различными параметрами:
internal static Expression<Func<AnotherCardholderEntity, Cardholder>> ExpressionMap = entity => new Cardholder
{
Id = entity.AnotherId,
CardholderNo = entity.AnotherCardholderNo,
};
Я получаю красное подчеркивание под ExpressionMap, говорящим, что member with same name already declared
Возможно ли это, или есть какие-то проблемы с этим?
Предполагая, что у меня есть сотни отображений выражений разных объектов для бизнес-объектов, я бы не хотел придумывать много разных имен для каждого из них
Я не думаю, что это имеет какое-либо отношение к лямбда. То, что вы делаете, по существу эквивалентно:
internal static int x = 5;
internal static string x = "five";
Который, очевидно, не сработает.
Вы даже можете избавиться от лямбда, и это все равно не сработает:
internal static Expression<Func<CardholderEntity, Cardholder>> ExpressionMap = null;
internal static Expression<Func<AnotherCardholderEntity, Cardholder>> ExpressionMap = null;
Вид решения зависит от архитектуры вашего приложения и от ваших целей. Но одним из вариантов было бы сохранить их словарь на основе этого типа. Не уверен, что это сработает для вас.