C# не поддерживает общие атрибуты. Я знаю, что ваш атрибут не является общим, но я полагаю, что вы хотите, чтобы внутри этого универсального класса использовался T в уровне атрибута, что делает атрибут общим (вы получите различный тип Ignore для каждого T)
К сожалению, t достичь этого в C#. Why does C# forbid generic attribute types?
Обновлено из комментариев: В области пространства имен вы можете иметь атрибут Ignore. Вы можете сделать отражение на test<T>
и искать свойства с атрибутом Ignore.
public sealed class Ignore : Attribute { }
public sealed class test<T> : IEnumerable<T> where T : new()
{
[Ignore]
public test_2 SomeProperty { get; set; }
}
public class test_2
{
[Ignore]
public string TestData { get; set; }
}
Я считаю, что ваш класс должен быть назван IgnoreAttribute для правильной работы. – pquest
'[test .Ignore]'. Вы должны указать тип для 'T'. Это связано с тем, что параметр типа 'T' доступен для вложенных типов, даже если ваши атрибуты не используют его. –
vcsjones
Это становится очень неудобным в использовании - почему в универсальном классе есть не общий атрибут? Включение атрибутов внутри классов на самом деле не является хорошей практикой – Rhumborl