我有一個工作設置,它不是強類型的並且依賴於反射。lambda表達式作爲屬性
我有一類,說
class Person{
public string FirstName {get ; set;}
public string LastName {get; set;}
public int Age {get; set;}
...
// some more public properties
}
和
class CellInfo {
public string Title {get; set;}
public string FormatString {get; set;}
}
和我有這樣
Dictionary<string, CellInfo> fields = new Dictionary<string, CellInfo>();
fields.Add("FirstName", new CellInfo {Title = "First Name", FormatString = "Foo"});
fields.Add("LastName", new CellInfo {Title = "Last Name", FormatString = "Bar"});
這是一個簡單的字典,屬性名稱和對一些信息的字典他們。 我把字典用於處理Person實例另一個模塊,我做
Dictionary<string, CellInfo> fields = SomeMethodToGetDictionary();
foreach(Person p in someCollection)
{
foreach(var field in fields)
{
object cellValue = type(Person).GetProperty(field.Key).GetValue(p, null);
// use cellValue and info on field from field.Value somewhere.
...
}
}
傳遞字符串字段名稱和使用反射的這種方法可行,但我想知道是否有這樣做的一個強類型的方法這個。
我腦子裏想的是什麼,其具有存儲在LINQ表達式的屬性,像這樣
fields.Add("FirstName", new CellInfo
{
Title = "First Name",
FormatString = "Foo",
EvalExpression = p => p.FirstName
});
和使用過程中,一個人的對象以某種方式使用EvalExpression
和獲得屬性值。我不知道從哪裏開始,或者有什麼樣的語法可以讓這樣的屬性可以評估。我很新的功能代表和表達式樹,我甚至不知道正確的關鍵字來搜索。希望我的描述很明確;如果沒有,請告訴我,我會在必要時提供詳情。 任何援助將不勝感激。
有人關心到c忽略爲什麼downvote? – Aliostad
它可能是第一行的命令(而不是請求)。 – MikeKulls