![](/img/trans.png)
[英]How can I get implicit type conversions from string members of anonymous types to strongly-typed controller actions?
[英]How can I retrieve strongly typed properties from an anonymous type?
我正在使用匿名類型將類型化對象的集合傳遞給TemplateResolver,在該實例中,新實例化的文本模板中的命名占位符可以從多個對象中獲取值,例如
var body = TemplateResolver.ResolveTemplate(template.ExternalRecipientBody, new {Sender = customer, NewJobCard = jobCard});
其中模板具有占位符,例如{Sender$Surname}
和{NewJobCard$JobNumber}
。
在ResolveTemplate
內部,我需要對Sender和NewJobCard進行強類型化,而不知道將其強制轉換為什么類型。
解決方案如此之遙
到目前為止,我已經提出了這個建議,但是不喜歡使用字符串成員名稱。 我問了另一個問題 ,即至少在方法調用中,即使不是方法主體,也可能以某種方式使字符串變亂。
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;
}
匿名類型僅具有方法范圍,因此您將無法訪問“ ResolveTemplate”方法中的強類型屬性。
您有2個選擇:
如果您需要“解析”來自多個來源的屬性,請考慮使用一種OO抽象形式(接口/抽象類)來傳遞類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.