Я пишу пользовательский атрибут безопасности и получаю странное поведение компилятора... Когда я использую атрибут в том же файле, значения параметров по умолчанию работают нормально:
using System.Security.Permissions;
[System.Serializable]
sealed class FooAttribute : CodeAccessSecurityAttribute {
public FooAttribute(SecurityAction action = SecurityAction.Demand) : base(action) { }
public override System.Security.IPermission CreatePermission() { return null; }
}
[Foo] class Program {
static void Main(string[] args) { }
}
Но когда я разделяю приведенный выше код на два файла - файл 1:
using System.Security.Permissions;
[System.Serializable]
sealed class FooAttribute : CodeAccessSecurityAttribute {
public FooAttribute(SecurityAction action = SecurityAction.Demand) : base(action) { }
public override System.Security.IPermission CreatePermission() { return null; }
}
И файл 2:
[Foo] class Program {
static void Main(string[] args) { }
}
У меня ошибка компилятора:
Ошибка: 'FooAttribute' не содержит конструктора, который принимает 0 аргументов
Это происходит только с наследниками CodeAccessSecurityAttribute
, выглядит очень странно...