Intereting Posts
Как создать индексы индексов префиксов без шаблонов MVC HTML Editor? Существует ли ansible для CLR объект DateTime с высоким разрешением (микросекунда, наносекунда)? Использование AutoMapper для сопоставления свойства объекта с строкой Что касается скользящего истечения срока аутентификации и сеанса форм ASP.NET Лучший способ разделить массив Обнаружение электронной почты в тексте с использованием регулярного выражения Отслеживать действия пользователя / действия для веб-сайта asp.net mvc? Не удалось отправить почтовое сообщение в asp.net HttpClient GetAsync завершает работу в фоновом режиме в Windows 8 ASP.NET MVC 3 Типы привязки и формы формы Как интегрировать сканер штрих-кода в веб-приложение ASP.NET? ASP.NET не может кэшировать нулевое значение Можно ли использовать Visual Studio 2012 Express Edition для коммерческого использования? Объединение двух полей в DataTextField. Это возможно? c # – следует ли использовать «ref» для передачи коллекции (например, List) ссылкой на метод?

Создание методов расширения с помощью System.CodeDom

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

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

Спасибо

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

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

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

См. Атрибут расширения

Цитата:

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

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

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