能否通过泛型的where子句要求某个变量必须声明了某特性?
如:
[Xml]
class a{}
class b{}
void m<T>(T v) where T:????; //这里怎么写
希望实现 m(new a()); 编译通过, m(new b()) 编译不通过
------解决方案--------------------约束某个变量是不行的,你可以声明一个基类或接口就可以实现了。
约束就这么几种:
参见MSDN:类型参数的约束(C# 编程指南)
------解决方案--------------------只能在里面写 ,或者像ls说的写个基类或接口
void m<T>(T v) where T : class
{
var length = typeof(T).GetCustomAttributes(typeof(Xml), false).Length;
if (length == 0)
throw new Exception("*****");
}