使用System.CodeDom生成扩展方法

时间:2011-05-15 21:10:35

标签: c# extension-methods codedom system-codedom-compiler

有没有人尝试使用.NET 4.0下的System.CodeDom生成扩展方法?似乎没有任何方法可以将CodeMemberMethod或CodeParameterDeclarationExpression指定为扩展方法/参数。

如果无法做到这一点,是否有任何良好的解决方法?

由于

2 个答案:

答案 0 :(得分:6)

显然CodeDom无法为扩展方法的第一个参数生成正确的代码,但你可以这样作弊:

var param = new CodeParameterDeclarationExpression("this string", "s");

它会幸福地忽略“这个字符串”不是有效类型的事实......

答案 1 :(得分:0)

请参阅Extension Attribute

引用:

  

在Visual Basic中,您应该使用此属性来创建扩展方法。有关详细信息,请参阅扩展方法(Visual Basic)。

     

在C#中,您不需要使用此属性;您应该使用this(C#Reference)修饰符作为第一个参数来创建扩展方法。编译器自动为扩展方法发出ExtensionAttribute。有关详细信息,请参阅扩展方法(C#编程指南)。

     

如果您正在编写支持扩展方法的编译器,则编译器应在每个扩展方法以及包含一个或多个扩展方法的每个类和程序集上发出此属性。