C#在具有XmlElementAttribute属性的类上使用where关键字

时间:2013-06-17 21:51:16

标签: c# generics xml-serialization where type-constraints

这就是我要做的事情:

public class NormalClass
{
    [XmlAttribute]
    public int Example;
}

[XmlRoot]
public class GenericClass<T> where T : HasXmlElementAttribute
{
    [XmlArray]
    public List<T> Variables;
}

我认为where T : IXmlSerializable 可能有效,但事实并非如此。

这甚至可以吗?如果是这样,那么正确的方法是什么?

其他想法/编辑

有没有办法实现同样的目标?有没有办法只允许可以xml序列化的类?

由于

2 个答案:

答案 0 :(得分:1)

属性不属于类型系统。

您无法根据属性的存在约束类型参数。


旁注:这种理由不是很有效;构造函数也不是类型系统的一部分,但: new()是一个有效的约束。

答案 1 :(得分:0)

不,您不能使用泛型类型约束来限制类型参数的属性。您只能使用泛型类型约束来限制类型参数:

  • 类型参数继承的基础
  • type参数实现的接口
  • 类型参数提供的构造函数
  • 类型参数是值类型还是引用类型

进一步阅读: