2012-07-22 28 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