Ограничение параметра typeof () для атрибута только конкретными типами ... возможно ли это? - PullRequest
2 голосов
/ 04 марта 2010

Я использую аттестацию на основе атрибутов, и я хотел бы ограничить то, что можно вводить в эти атрибуты.

например:

ThisValidatesSomethingAttribute(Type typeOfExceptionToThrowOnFailure)

так при использовании это

[ThisValidatesSomething(typeof(MassiveFailureException))]
public int SomeIntParameter()

есть ли способ ограничить типы, которые могут быть введены в этот атрибут?

Я хочу ограничить параметр Type только теми типами, которые происходят от, скажем, базового класса с именем "SuperSpecialBaseException"

В обобщениях я бы просто использовал ограничение типа "где T: SuperSpecialBaseException", но, конечно, это не обобщение (радостное ограничение атрибутов)

Ответы [ 2 ]

2 голосов
/ 04 марта 2010

Не как функция времени компиляции. Это эквивалентно возможности принимать int параметры в диапазоне от 10 до 20; Такая проверка должна выполняться в вашем коде, она не может быть объявлена.

0 голосов
/ 04 марта 2010

Нет, нет способа сделать это во время компиляции. Вам нужно будет выполнить проверку параметра во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...