Ответ 1
Моя аннотация никогда не вызывает по каким-либо причинам каких-либо решений?
Это своего рода непонимание атрибутов. Атрибуты эффективно существуют, чтобы добавить метаданные к определенным частям вашего кода (классы, свойства, поля, методы, параметры и т.д.). Компилятор берет информацию в атрибуте и испекает ее в ИЛ, который он выплевывает, когда он есть, едя ваш источник код.
Атрибуты сами по себе не делают ничего, если кто-то их не употребляет. То есть, кто-то в какой-то момент должен обнаружить ваш атрибут, а затем принять меры на нем. Они сидят в ИЛ вашего собрания, но они ничего не делают, если кто-то не находит их и не действует на них. Только тогда, когда они это сделают, экземпляр экземпляра будет создан. Типичный способ сделать это - использовать отражение.
Чтобы получить атрибуты во время выполнения, вы должны сказать что-то вроде
var attributes = typeof(Foo)
.GetMethod("Window_Loaded")
.GetCustomAttributes(typeof(AuthenticationRequired), true)
.Cast<AuthenticationRequired>();
foreach(var attribute in attributes) {
Console.WriteLine(attribute.ToString());
}