2010-06-22 62 views
3

在.net中,如果我有一個通用類SomeClass<T>,是否可以使用where關鍵字來要求T是具有某個屬性的類?例如:.net中泛型類型的屬性約束?

[SomeAttribute] 
class MyClass 
{ 
    ... 
} 

class AnotherClass<T> where T : Attribute(SomeAttribute) 
{ 
    ... 
} 

回答

3

不,這是不可能的。

最接近你可以做的是要求類實現一個特定的接口。

2

,你不行,但你可以通過檢查靜態構造函數的屬性避開這個問題:

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