从XmlSerializer函数传递不同的对象

时间:2012-11-02 12:02:43

标签: c# c#-4.0

我们如何从给定函数传递不同的Object。

 static public void SerializeToXML(FbTextView p)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(FbTextView));
        TextWriter textWriter = new StreamWriter(@"D:\movie.xml");
        serializer.Serialize(textWriter, p);
        textWriter.Close();
    }

现在的问题是,当我尝试传递两个或更多这样的两个对象时:

  static public void SerializeToXML(FbTextView p,FbTextField q)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(FbTextView));
        XmlSerializer Serializer = new XmlSerializer(typeof(FbTextField));
        TextWriter textWriter = new StreamWriter(@"D:\movie.xml");
        serializer.Serialize(textWriter, p);
        textWriter.Close();
    }

抛出错误:XMLParse异常未处理。而内在的例外是: “有一个错误反映了'FBformBuilder.FbTextField'类型 谢谢 !

2 个答案:

答案 0 :(得分:1)

问题将在内部异常中详细说明;尝试:

try {
    // ... your code
} catch(Exception ex) {
    while(ex != null) {
        Trace.WriteLine(ex.Message);
        ex = ex.InnerException;
    }
    throw;
}

然后查看记录的所有.Message。其中一个会告诉你确切的问题。例如,它可能是这样的:

  • 没有公共无参数构造函数
  • 不是公共类型
  • 无效的子类
  • duplicated / ambiguous element / namespace

或类似的东西

答案 1 :(得分:0)

内部异常:

  

可能没有为基本类型指定XmlElement的类型。

[XmlElement(Type)] FbTextField字段

中删除Value属性