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

时间:2014-12-03 13:41:26

标签: c# c#-4.0 generics custom-attributes

public sealed class test<T> : IEnumerable<T> where T : new()
{
     public sealed class Ignore : Attribute { }
}    

public class test_2
{
     [ ???? ]
     string helllo;
}

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

1 个答案:

答案 0 :(得分:1)

C#不支持通用属性。 我知道你的属性不是通用的,但我想你希望它在泛型类中使用属​​性级别的T,这使得属性通用(你会为每个T获得不同的忽略类型)

很遗憾,你无法在C#中实现这一目标。 Why does C# forbid generic attribute types?

从评论更新: 您可以在命名空间的范围内具有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; }
}