public sealed class test<T> : IEnumerable<T> where T : new()
{
public sealed class Ignore : Attribute { }
}
public class test_2
{
[ ???? ]
string helllo;
}
有沒有方法從test<T>
類之外訪問屬性? 我似乎無法找到一個。通用類中創建的自定義屬性
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的忽略類型)
不幸的是,在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; }
}
'公共密封類測試
是的,但如果你願意的話,你可以這樣做。 C#不支持這種方式來避免這種複雜性。如果他們不相關,爲什麼你想把這個屬性放在那個類裏? – bbeda 2014-12-03 14:25:54
該屬性與'test
我相信你的類需要被稱爲IgnoreAttribute才能正常工作。 – pquest 2014-12-03 13:44:20
'[test .Ignore]'。你必須爲'T'指定一個類型。這是因爲類型參數「T」可用於嵌套類型,即使您的屬性不使用它。 –
vcsjones
2014-12-03 13:44:28
這變得非常尷尬 - 爲什麼在泛型類中有一個非泛型屬性?把屬性放在類裏並不是很好的做法 – Rhumborl 2014-12-03 13:46:11