在泛型类中创建的自定义属性
本文关键字:自定义属性 创建 泛型类 | 更新日期: 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; }
}