Я создаю список свойств типа, который нужно включить в экспорт коллекции этого типа. Я бы хотел сделать это без использования строк для имен свойств. В список должны быть включены только определенные свойства типа. Я бы хотел сделать что-то вроде:
exportPropertyList<JobCard>.Add(jc => jc.CompletionDate, "Date of Completion");
Как я могу реализовать этот общий метод Add? Кстати, строка - это описание свойства.
Вы можете получить объект PropertyInfo, изучив переданное выражение. Что-то вроде:
public void Add<T>(Expression<Func<T,object>> expression, string displayName)
{
var memberExpression = expression.Body as MemberExpression;
PropertyInfo prop = memberExpression.Member as PropertyInfo;
// Add property here to some collection, etc ?
}
Это неполная реализация, потому что я не знаю, что именно вы хотите сделать со свойством - но он показывает, как получить PropertyInfo из выражения - объект PropertyInfo содержит все метаданные о свойстве. Кроме того, обязательно добавьте обработку ошибок к приведенному выше, прежде чем применять его в производственном коде (т. е. защита от того, что выражение не является MemberExpression и т. д.).