Я создал метод, который проверяет объект и возвращает [запрошенный] набор свойств.Отражающие динамические функции
public static List<object> Inspect<T>(T obj, params Func<T, object>[] funcs)
{
List<object> results = new List<object>(funcs.Length);
foreach (var func in funcs)
{
results.Add(func(obj));
}
return results;
}
Затем вызывается, например, на List
, например, так:
List<string> peopleData = new List<string>(10) { "name", "age", "address" };
List<object> properties = Inspect(peopleData, p => p.Count, p => p.Capacity);
// The results would be
// properties[0] = 3
// properties[1] = 10
Я хотел бы адаптировать метод Inspect
вместо этого вернуть Dictionary<string, object>
, где ключи словаря будет имена свойств. Затем адаптированный метод будет вызван следующим образом:
List<string> peopleData = new List<string>(10) { "name", "age", "address" };
Dictionary<string, object> properties = Inspect(peopleData, p => p.Count, p => p.Capacity);
// The results would be
// properties["Count"] = 3
// properties["Capacity"] = 10
Возможно ли это? Если да, и если решение основано на отражении (как я полагаю, это должно было бы быть), будет ли большой успех?
В OP нет объектов Expression. – Servy
Thanls @ chris-eelmaa Я читал по вашей ссылке, есть ли причина, почему этот ответ не так хорош? [link] (http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression/2916344#2916344) – psand2286
@ psand2286: нет особых причин. Я выбрал ответ, потому что A) он был первым, B) у него была та же подпись, что и ваша функция 'Inspect' (вид). –