簡體   English   中英

如何從匿名類型檢索強類型屬性?

[英]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個選擇:

  1. 裝箱/拆箱
  2. 咬一下子彈並聲明一個結構/類

如果您需要“解析”來自多個來源的屬性,請考慮使用一種OO抽象形式(接口/抽象類)來傳遞類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM