使用 System.CodeDom 生成扩展方法

本文关键字:扩展 方法 System CodeDom 使用 | 更新日期: 2023-09-27 17:56:25

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

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

谢谢

使用 System.CodeDom 生成扩展方法

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

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

它会幸福地忽略"此字符串"不是有效类型的事实......

请参阅扩展属性

报价:

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

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

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