首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

可否通过泛型的where子句要求某个变量必须声明了某特性

2013-01-21 
能否通过泛型的where子句要求某个变量必须声明了某特性?如:[Xml]class a{}class b{}void mT(T v) where

能否通过泛型的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("*****");
        }

热点排行