Я использую пользовательские атрибуты для присоединения метаданных к методам класса.Во время выполнения эти атрибуты и их параметры проверяются.Есть ли согласие относительно того, какой существующий класс исключений выдать, если атрибут (или параметр атрибута) окажется недействительным?
Например, если для атрибута задано имя метода экземпляра в качестве параметра конструктора:
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
.Если (например, из-за опечатки) не удается найти метод с таким именем, он должен вызвать исключение.Поскольку я не хочу изобретать новые классы исключений, какой из них вы бы предложили?
И просто чтобы быть уверенным, нет способа проверить имена методов во время компиляции, верно?