Я не очень хорошо знаком с лямбда-выражениями. Поэтому у меня есть следующее выражение:Получить параметры из лямбда Выражение
EnabledPropertySelector = l => l.FranchiseInfo.ExternalSystemType == ExternalSystemTypes.Master
И два свойства:
public string VisibilityPropertyName { get; set; }
public object VisibilityPropertyValue { get; set; }
Я хочу, чтобы извлечь некоторые данные из выражения так, в конце концов, я могу получить значения двух свойств:
VisibilityPropertyName == 'FranchiseInfo.ExternalSystemType';
VisibilityPropertyValue == ExternalSystemTypes.Master;
VisibilityPropertyName
всегда строка. Это имя свойства. VisibilityPropertyValue
может быть любого типа.
EDIT:
У меня есть много свойств. Некоторые из них зависят от других свойств. Для каждого отдельного имущества, я должен вручную написать имя и значение родительского объекта:
{ VisibilityPropertyName = 'FranchiseInfo.ExternalSystemType', VisibilityPropertyValue = ExternalSystemTypes.Master, EnabledPropertySelector = l => l.FranchiseInfo.ExternalSystemType == ExternalSystemTypes.Master}
Вместо того, чтобы писать все это я хочу написать только выражение и заполнить свойства из него.
Это декларация expresion:
Expression<Func<TEntity, bool?>> EnabledPropertySelector
Что вы пытаетесь достичь с первым утверждением? Для доступа к свойствам FanchiseInfo вам не требуется выражение лямбда. –
Вы не извлекаете данные из выражения, вы оцениваете выражение. Как спросил Ник, расскажите, что вы пытаетесь выполнить в целом, а не только с этим конкретным выражением. – Moho
В какой-то момент я буду в общем контексте и вызовет EnabledPropertySelector.Compile() (e), чтобы получить значение от func. Я хочу заполнить два свойства из выражения в какой-то более ранний момент, поэтому я могу сэкономить некоторую дополнительную типизацию. – Mdb