在我的应用程序中我正在进行XML序列化,问题是如果我们要序列化一个类型,那个类上应该有一个[Serializable]
属性,在我的情况下我会得到一个未知对象来序列化怎么能我这样做?
例如我想序列化这个:
public class UnKnownType
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public DateTime DOB
{
get;
set;
}
public bool IsPrimary
{
get;
set;
}
}
我在序列化时遇到此错误
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle,String id) 在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle) 在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces名称空间) 在System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter,Object o,XmlSerializerNamespaces名称空间) 在System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter,Object o) 在D:\ New Adventures \ ConsoleApplication4 \ ConsoleApplication4 \ Program.cs:第29行的ConsoleApplication4.Program.Main(String [] args)中
答案 0 :(得分:3)
XML序列化不需要SerializableAttribute。 但是,您必须知道,只有具有公共getter和setter的属性才会被序列化。
答案 1 :(得分:2)
如果你的意思是你有一个类,如
class MyClass
{
IMyInterface Something{get; set;}
}
然后你可以在实例化时告诉XmlSerializer IMyInterface
的类型:
XmlSerializer xs = new XmlSerializer(typeof(MyClass), new Type[] {typeof(MyImplementation)}
MyImplementation
实施IMyInterface
。
答案 2 :(得分:0)
尝试使用XamlWriter.Save(unknownObject)
。这是非常聪明的序列化器: - )