Так нормальный Dictionary<string, Action>
я использую так:Lambda Выражение в качестве ключа в словаре
validationsDictionary["ThisValidation"]();
Однако строки могут быть пропущены набран. Поэтому я хотел бы использовать свойство модели как ключ:
validationsDictionary[x => x.ThisProperty]();
Но, я не знаю точно, что тип будет, я попытался это:
Dictionary<Func<Model>, Action>
Dictionary<Expressions<Model>, Action>
Dictionary<Expression<Func<Model>>, Action>
Я знаю, что некоторые люди не оценивают использование функций в качестве ключей. Так что я мог бы сделать что-то вроде этого:
void Validate(Expression<Func<Model>> key)
{
validationsDictionary[key.ToString()]();
}
Я не знаю, если key.ToString()
является правильным свойство для использования, но вы получите суть.
EDIT
Итак, я использовал это:
Expression<Func<DisplayContentViewModel, object>> predicate
И это работает, как лечить, давая мне возможность делать: x => x.SomeProperty
Я полагал, что я могу использовать predicate.Name
для представления строкового представления имени. Итак, теперь мне нужно выяснить, как заполнить словарь!
Вы можете использовать 'Словарь
Что такое' x'? не можете ли вы просто использовать 'x.ThisProperty'? (no lambda) – Sayse
Eeh, если вы просто не хотите ошибаться в строках, почему бы не использовать 'enum's? –