Генерировать методы расширения с помощью System.граф CodeDOM

кто-нибудь когда-либо пытался генерировать методы расширения с помощью системы.Codedom в рамках .Net версии 4.0? Кажется, нет никакого способа указать CodeMemberMethod или CodeParameterDeclarationExpression как метод/параметр расширения.

Если это невозможно, есть ли хорошие обходные пути?

спасибо

2 ответов


по-видимому, CodeDom не может генерировать правильный код для первого параметра метода расширения, но вы можете обмануть его следующим образом:

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

он будет блаженно игнорировать тот факт, что" эта строка " не является допустимым типом...


посмотреть Атрибут Расширения

цитата:

в Visual Basic этот атрибут следует использовать для создания метода расширения. Дополнительные сведения см. В разделе методы расширения (Visual Basic).

В C# вам не нужно использовать этот атрибут; вы должны использовать модификатор this (C# Reference) для первого параметра для создания метода расширения. Компилятор автоматически выдает ExtensionAttribute для методов расширения. For more информацию см. В разделе методы расширения (руководство по программированию на C#).

Если вы пишете компилятор, поддерживающий методы расширения, компилятор должен выдавать этот атрибут для каждого метода расширения и для каждого класса и сборки, содержащей один или несколько методов расширения.