首页 新闻 会员 周边

.NET 对于attribute泛型约束

0
悬赏园豆:80 [已解决问题] 解决于 2012-09-05 22:33

我写了个扩展方法用作xml序列化

public static string OutputXML<T> (this T instance) where T:IXmlSerializable

{

....
}

调用的类上标记他

public class Package:IXmlSerializable

{

....
}

可以看到这里的约束是T:IXmlSerializable,这个只是个标记接口,我想把它换成Attribute。

调用的类上标记他

[IXmlSerializable]

public class Package

{

....
}

怎么写这个约束呢?

nickycookie的主页 nickycookie | 初学一级 | 园豆:106
提问于:2012-09-05 14:55
< >
分享
最佳答案
0
收获园豆:30
zhangweiwen | 小虾三级 |园豆:904 | 2012-09-05 16:19
其他回答(1)
1

写不了吧!没法在编译期间检查,你只能在运行时通过反射获取Attribute来判断。

同时,我觉得加属性和增加父类,并不会让你的代码看起来有啥不一样的。

[IXmlSerializable]

public class Package{}

 

public class Package : IXmlSerializable

收获园豆:50
Launcher | 园豆:45045 (高人七级) | 2012-09-05 15:00

是没啥不一样,因为属性相对而言比较适合,而且空接口不太符合规范。

支持(0) 反对(0) nickycookie | 园豆:106 (初学一级) | 2012-09-05 15:56

Attribute应该是编译后放在元数据上,然后通过反射获取的吧?

支持(0) 反对(0) nickycookie | 园豆:106 (初学一级) | 2012-09-05 15:59

@nickycookie: 是的,用反射,很容就能拿到该Attribute,你只要比对该Attribute和你的 IXmlSrializable的类型一致就行了。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-09-05 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册