使用System.CodeDom生成扩展方法

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

如果这是不可能的,有什么好的解决方法吗?

谢谢

显然,CodeDom无法为扩展方法的第一个参数生成正确的代码,但您可以像这样欺骗它:

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

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

请参阅扩展属性

引用:

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

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

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