Мне нужна функция, которая принимает в качестве параметра следующие вещи:
- Тип объекта
- Имя определенного свойства объекта
В настоящее время я делаю это довольно неудобно и долго:
public static void Add<TEntity, TProperty>(TEntity e, Expression<Func<TProperty>> expression)
{
var type = typeof(TEntity);
var propertyName = ((MemberExpression) expression.Body).Member.Name;
}
, что приводит к вызову функции, подобному этому: Add(Foo, () => Foo.Bar);
Однако с этим решением у меня есть пара проблем:
- Это очень долго, когда у меня есть такой объект:
Add(Foo.Bar.Element.Type, () => Foo.Bar.Element.Type.Name)
и выглядит довольно некрасиво. - Не гарантируется, что
propertyName
является свойствомтип объекта. - На самом деле я ничего не делаю с
e
, поэтому он не используется.
Есть ли лучшее решение для этого?