C#将对象实例序列化为XML

C#将对象实例序列化为XML,c#,.net,xml-serialization,C#,.net,Xml Serialization,我在序列化对象实例时遇到了一个小问题,让一些伪代码来说明问题: List<A> ListOfA = new List<A>(); [Serializable] public class A { public Object Instance; ... } [Serializable] public class B { public String SomeAttribute = "example"; } // This will be called: voi

我在序列化对象实例时遇到了一个小问题,让一些伪代码来说明问题:

List<A> ListOfA = new List<A>();

[Serializable]
public class A
{
public Object Instance;
...
}

[Serializable]
public class B
{
    public String SomeAttribute = "example"; 
}

// This will be called:

void Serialize()
{
    var a = new A();
    a.Instance = new B();
    ListOfA.Add(a);

 // a.Instance = new String("test"); works but List<String>, B, ... throws Invalid Operation Exception when serializing:

    using (TextWriter textWriter = new StreamWriter(filePath, false))
    {
        var xmlSerializer = new XmlSerializer(ListOfA.GetType());
        xmlSerializer.Serialize(textWriter, ListOfA );
    }
}
List ListOfA=新列表();
[可序列化]
公共A类
{
公共对象实例;
...
}
[可序列化]
公共B级
{
公共字符串SomeAttribute=“示例”;
}
//这将被称为:
void Serialize()
{
var a=新的a();
a、 实例=新的B();
增加(a);
//a.实例=新字符串(“测试”);有效,但列表,B,…在序列化时引发无效操作异常:
使用(TextWriter TextWriter=new StreamWriter(文件路径,false))
{
var xmlSerializer=新的xmlSerializer(ListOfA.GetType());
Serialize(textWriter,ListOfA);
}
}
有人能解决这个问题吗

我尝试过使用
xmlclude
,但没有任何结果

甚至可以在不知道对象类型的情况下序列化对象吗?

试试:

[XmlInclude(typeof(B))]
public class A {
  public Object Instance;
}

顺便说一句,[Serializable]对于xml序列化是无用的。

谢谢您的快速响应,但我确实通过给XmlSerializer第二个参数找到了问题的解决方案:

var xmlSerializer = new XmlSerializer(ListOfA.GetType(), new Type[] { typeof(B) });

这样我就不必向类A添加[xmlclude(typeof(B))。

在序列化过程中会出现什么错误?(查找内部异常))错误的类型是。。。B也不例外。使用XmlInclude或SoapInclude属性指定静态未知的类型。我是如何找到解决问题的方法的,我把它写在下面。