我写了个扩展方法用作xml序列化
public static string OutputXML<T> (this T instance) where T:IXmlSerializable
{
....
}
调用的类上标记他
public class Package:IXmlSerializable
{
....
}
可以看到这里的约束是T:IXmlSerializable,这个只是个标记接口,我想把它换成Attribute。
调用的类上标记他
[IXmlSerializable]
public class Package
{
....
}
怎么写这个约束呢?
写不了吧!没法在编译期间检查,你只能在运行时通过反射获取Attribute来判断。
同时,我觉得加属性和增加父类,并不会让你的代码看起来有啥不一样的。
[IXmlSerializable]
public class Package{}
public class Package : IXmlSerializable
是没啥不一样,因为属性相对而言比较适合,而且空接口不太符合规范。
Attribute应该是编译后放在元数据上,然后通过反射获取的吧?
@nickycookie: 是的,用反射,很容就能拿到该Attribute,你只要比对该Attribute和你的 IXmlSrializable的类型一致就行了。