1

这就是我想要做的:

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

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

我认为where T : IXmlSerializable 可能有效,但它没有。

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

其他想法/编辑

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

谢谢

4

2 回答 2

1

属性不是类型系统的一部分。

您不能基于属性的存在来约束类型参数。


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

于 2013-06-17T21:53:53.100 回答
0

不,您不能使用泛型类型约束来限制类型参数的修饰属性。您只能通过以下方式使用泛型类型约束来限制类型参数:

  • 类型参数继承什么基
  • 类型参数实现了哪些接口
  • 类型参数提供了哪些构造函数
  • 类型参数是值类型还是引用类型

延伸阅读:

于 2013-06-17T21:55:29.810 回答