Можно ли использовать [CustomAttribute] с анонимными встроенными делегатами? - PullRequest
0 голосов
/ 29 марта 2012

С помощью нотации [attribute] я могу прикрепить пользовательские атрибуты к методам экземпляра класса.Но если я напишу код, подобный

menu.handlers[MOUSECLICK] += (clickEvent)delegate(event e) { ... };

, нотация [attribute] будет недоступна.Я ограничен атрибутами для методов, объявленных вне строки, или есть ли способ как-то сделать их для встроенных анонимных методов, объявленных с использованием делегата () {...}?

(Мне нравится встроенный стиль: у вас есть легкий доступ к переменным в области видимости, и я думаю, что это делает более приятный и компактный код, где вы можете увидеть, что обработчик событий будет делать натам же, где вы его зарегистрировали ...)

1 Ответ

2 голосов
/ 29 марта 2012

Анонимный метод определяется как встроенный, а не как метод члена какого-либо класса.Кроме того, невозможно применить пользовательские атрибуты к анонимному методу, а также анонимный метод не может определять универсальные типы или добавлять общие ограничения.

Цитирование из статьи MSDN - Создание элегантного кода сАнонимные методы, итераторы и частичные классы

Короче говоря, нет! Вы не можете добавлять пользовательские атрибуты для анонимных методов

...