3
在.net中,如果我有一個通用類SomeClass<T>
,是否可以使用where
關鍵字來要求T是具有某個屬性的類?例如:.net中泛型類型的屬性約束?
[SomeAttribute]
class MyClass
{
...
}
class AnotherClass<T> where T : Attribute(SomeAttribute)
{
...
}
在.net中,如果我有一個通用類SomeClass<T>
,是否可以使用where
關鍵字來要求T是具有某個屬性的類?例如:.net中泛型類型的屬性約束?
[SomeAttribute]
class MyClass
{
...
}
class AnotherClass<T> where T : Attribute(SomeAttribute)
{
...
}
不,這是不可能的。
最接近你可以做的是要求類實現一個特定的接口。
,你不行,但你可以通過檢查靜態構造函數的屬性避開這個問題:
public class MyType<T> {
static MyType() {
// not compile checked, something like:
if (!Attribute.IsDefined(typeof(T), typeof(MyAttribute))
throw new ArgumentException(); // or a more sensible exception
}
}