在泛型类中创建的自定义属性

本文关键字:自定义属性 创建 泛型类 | 更新日期: 2023-09-27 18:33:00

public sealed class test<T> : IEnumerable<T> where T : new()
{
     public sealed class Ignore : Attribute { }
}    
public class test_2
{
     [ ???? ]
     string helllo;
}

有没有办法从test<T>类外部访问属性?我似乎找不到。

在泛型类中创建的自定义属性

C# 不支持泛型属性。我知道您的属性不是泛型的,但我想您希望它在该泛型类中在属性级别中使用 T,这使得属性通用(每个 T 都会得到不同的 Ignore 类型)

遗憾的是,您无法在 C# 中实现此目的。为什么 C# 禁止泛型属性类型?

从评论更新:可以在命名空间的作用域中使用 Ignore 属性。您可以对test<T>进行反射,并使用"忽略"属性查找属性。

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; }
}