SomeClass<T>
,是否可以使用where
关键字来要求T是具有特定属性的类?类似的东西:
[SomeAttribute]
class MyClass
{
...
}
class AnotherClass<T> where T : Attribute(SomeAttribute)
{
...
}
答案 0 :(得分:3)
不,那是不可能的。
您最接近的方法是要求该类实现特定的接口。
答案 1 :(得分: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
}
}