peo*_*peo 5 c# code-generation
新的(> 2.0).NET框架是否为代码生成提供了任何增强功能?
我在2.0中使用CodeDom,我想知道代码生成是否更简单.
这取决于您想要完成什么。
您提到使用 CodeDom 生成代码 - 如果您希望动态生成方法,那么您可以使用 LINQ 表达式(我想不出一个非常好的教程,但只需 google 一下即可)。
LINQ 表达式的优点是更容易编写(根据我的经验)、生成速度更快(特别是当您编写整个类来封装单个方法时)并且执行速度非常快。
以下是 LINQ 表达式的 VB.Net 片段,该表达式生成一个函数,该函数接受 ASP.Net 控件并返回其(受保护的)ViewState 属性值:
'generate a delegate that can access the protected control property "ViewState"
'(by using LINQ expressions, we can avoid the performance hit of reflection)
Dim cntrlParam As ParameterExpression = Expression.Parameter(GetType(Control), "cntrl")
Dim vsPropertyAcessor As MemberExpression = Expression.Property(cntrlParam, "ViewState")
dim viewStateAccessor as Func(of Control, StateBag) = Expression.Lambda(vsPropertyAcessor, cntrlParam).Compile()
Run Code Online (Sandbox Code Playgroud)
然后我们可以像这样调用生成的函数:
viewStateAccessor (myCntrl)("my_vs_key")
Run Code Online (Sandbox Code Playgroud)
如果您希望生成静态代码,请查看VS 的文本模板功能。