通用类约束 - 我可以指定Generic类型可以序列化为XML吗?

jam*_*iet 2 c# xml-serialization

我正在编写一个Generic类,它尝试将Type T的对象序列化为XML.不幸的是(我相信你知道)并非所有对象都可以成功地序列化为XML,因此我希望能够编写一个约束来指定T只能是一个XML Serializable类.这是可能吗?

很确定这个问题的答案是"不",但想想无论如何我都会问,以防我错过了什么.

Mar*_*ell 5

唯一可用的限制是:

  • class/struct
  • new()
  • BaseType/Interface

其中,只有两个有点有趣的是:new()(因为XmlSerializer需要一个公共的无参数构造函数)和:Interface(因为IXmlSerializable是其中一个选项); 然而:

  • IXmlSerializable不是必需的,因此不适用
  • 这里没有约束强制类型是公共类型(在嵌套类型的情况下是公共类型的公共类型)
  • 它没有考虑到泛型限制

所以简而言之:不,这不是你可以通过通用约束来强制执行的