我正在使用以下代碼從匿名類型檢索命名成員。有什麼辦法可以將follwing代碼轉換爲使用lambda表達式來實現此目的,或者至少允許調用代碼使用lamda,即使'deep down'我必須使用字符串嗎?如何避免使用字符串成員名稱來獲取匿名類型的成員?
private T GetAnonymousTypeMember<T>(object anonymousType, string memberName) where T: class
{
var anonTypesType = anonymousType.GetType();
var propInfo = anonTypesType.GetProperty(memberName);
return propInfo.GetValue(anonymousType, null) as T;
}
新增: 這是怎麼anonymousType
到達。該GetAnonymousTypeMember
方法是私有的一類,其唯一的公共方法聲明如下:
公共無效PublishNotification(NotificationTriggers觸發,對象templateParameters)
我調用這個方法:
PublishNotification(NotificationTriggers.RequestCreated, new {NewJobCard = model});
這new {NewJobCard = model}
是什麼是GetAnonymousTypeMember
作爲anonymousType
。
你想改用什麼?是否有另一種提到會員的方式? – 2010-08-03 09:30:28
喜歡的東西GetAnonTypeMember(M => m.Person) – ProfK 2010-08-03 09:38:08
爲什麼不能簡單地用'm.Person'?爲什麼需要在一個方法中做到這一點,當方法唯一要做的就是調用lambda表達式? – Guffa 2010-08-03 09:41:14