Какое исключение бросить для недопустимого атрибута или параметра атрибута? - PullRequest
3 голосов
/ 19 января 2011

Я использую пользовательские атрибуты для присоединения метаданных к методам класса.Во время выполнения эти атрибуты и их параметры проверяются.Есть ли согласие относительно того, какой существующий класс исключений выдать, если атрибут (или параметр атрибута) окажется недействительным?

Например, если для атрибута задано имя метода экземпляра в качестве параметра конструктора:

public class StateAttribute : Attribute {
    public string ParentState { get; set; }
    public StateAttribute() {}
}

при использовании в таком классе, как:

public StateMachine {
   [State]
   public Result TopState(Event e) { ... }

   [State( ParentState = "TopState" )]
   public Result NestedState(Event e) { ... }
}

Процедура инициализации будет проходить по всем методам, к которым применен атрибут State, и разрешать имя ParentState в фактическом MethodInfo.Если (например, из-за опечатки) не удается найти метод с таким именем, он должен вызвать исключение.Поскольку я не хочу изобретать новые классы исключений, какой из них вы бы предложили?

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

1 Ответ

0 голосов
/ 19 января 2011

InvalidOperationException - это универсальное средство, которое я лично использую, когда «что-то пошло не так».

Но, если честно, это звучит как идеальный случай для получения вашего собственного исключения для меня.*

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