2012-07-22 33 views
3

我有一個出口的過程,需要一個註解類作爲一個輸出文件的定義(很像LINQ到實體)生成抽象類在.NET中的飛

類看起來是這樣的:

<ExportDefinition(Name:="Some Export Format")> 
Public Class SomeExportFormat 
    Overridable Property Id As Integer 

    <DisplayName("Customer Name")> 
    Overridable Property CustomerName As String 


End Class 

屬性可覆蓋,因爲我有時必須代理。

我需要添加的功能,其允許的瞬時格式規範(A WCF呼叫請求特定數據的出口與一個一次性格式)。

爲了避免重新編寫大量出口的代碼,我想帶我通過WCF通過定義和定義一個新類。

是我最好的選擇使用System.CodeDom.Compiler或者是有一個更優雅的解決方案?

回答

1

就個人而言,我會看TypeBuilder,但我有點... 不平衡,並準備跳進ILGenerator。但是,您可以通過這種方式創建新的子類。小心,但WCF和EF不會自動接受你的類型。大多數繼承感知庫(包括WCF和EF)將動態子類,因爲他們不希望他們和將它們視爲完全出乎意料的數據。

+0

感謝馬克,關於永遠不會去碰它應該是我自己的(我使用反射來提取各種特性和屬性,然後使用這些信息來格式化行)的唯一代碼。我有一個遊戲,看看它是怎麼回事 – Basic 2012-07-23 10:57:33

+0

好吧,閱讀了一些文章,它似乎創建一個類和屬性將是相當冗長的(我必須知道事情是如何工作的,我一直想要了解更多關於IL,所以這可能是一個很好的機會)。你能解釋爲什麼你會走這條路線而不是'CodeDom.Compiler'嗎? – Basic 2012-07-23 18:31:27

+0

@Basic也許我有偏見,但那是「點擊」給我的。如果codedom爲你點擊,那麼很好。其他因素:我愛DynamicMethod的,它是基於的ILGenerator,和我在一個範圍內的平臺上工作 - Reflection.Emit的比CodeDOM的 – 2012-07-23 19:06:42