Можно ли проверить параметр .NET Attibute?

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

[DonkeyAttribute (1)] // ОК

[DonkeyAttribute (-828)] // ошибка

В этом примере я мог бы использовать беззнаковое целое число (но я верю, что это не соответствует требованиям cls?) Рекомендации?


person MW_dev    schedule 16.12.2008    source источник


Ответы (4)


Я не думаю, что это нормально, однако в этой статье подробно описано решение с использованием PostSharp. Не уверен, подходит ли он для ваших целей, но давайте!

person Kieron    schedule 16.12.2008

Вы можете добиться этого с помощью модульных тестов; возможно, решение, аналогичное тому, которое я предложил для этого вопроса.

person Fredrik Kalseth    schedule 16.12.2008

Напрямую? Нет. Не без переписывания csc или vbc. Большинство людей будут выполнять указанную проверку во время выполнения.

Тем не менее, немного погуглили, и это запись в блоге об аспектах PostSharp. Технически он не проверяется компилятором, но обеспечивает проверку во время компиляции. Вы можете проверить это здесь. Другие примечания к PostSharp от того же автора можно найти здесь < / а>.

person John Rudy    schedule 16.12.2008

Вы можете создать настраиваемый атрибут, унаследовав его от System.Attribute. В пользовательском конструкторе вы должны иметь возможность проверить параметры.

person Oliver Friedrich    schedule 16.12.2008