Генерировать методы расширения с помощью 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#).
Если вы пишете компилятор, поддерживающий методы расширения, компилятор должен выдавать этот атрибут для каждого метода расширения и для каждого класса и сборки, содержащей один или несколько методов расширения.