C#中的通用集合是IXmlSerializable?

dth*_*her 3 c# generics collections serialization

是否将任何.NET泛型集合标记为IXmlSerializable?我已经尝试了List <T>和Collection <T>,但都没有开箱即用.

在我推出自己的集合<T>,列出<T>或字典<T>类之前,我想我会检查微软是否已经包含了已经包含的内容.这似乎是基本的功能.

编辑:通过"滚动我自己"我的意思是创建一个继承自泛型集合类的类,并实现IXmlSerializable.这是一个例子:http://www.codeproject.com/KB/XML/IXmlSerializable.aspx.这是另一个例子:http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx.

我在一个方法中使用DataContractSerializer,其签名如下所示:

public static Stream GetXmlStream(IXmlSerializable item)
Run Code Online (Sandbox Code Playgroud)

问题是虽然.NET框架中有许多可序列化的类,但并非所有类都明确实现了IXmlSerializable接口.

Shu*_*oUk 5

没有要求将IXmlSerializable实现 xml可序列化.

public class Foo 
{
    public List<string> Names { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

将xml序列化很好生成类似的东西:

<?xml version="1.0" encoding="utf-16"?>
<Foo 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Names>
    <string>a</string>
    <string>b</string>
    <string>c</string>
  </Names>
</Foo>
Run Code Online (Sandbox Code Playgroud)

public class Foo<T> 
{
    public List<T> Names {  get; set; }
}
Run Code Online (Sandbox Code Playgroud)

会产生

<?xml version="1.0" encoding="utf-16"?>
<FooOfString 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Names>
    <string>a</string>
    <string>b</string>
    <string>c</string>
  </Names>
</FooOfString>
Run Code Online (Sandbox Code Playgroud)