2011-02-07 8 views
0

私のアプリケーションで私はXMLシリアル化を行っていますが、タイプをシリアライズしたい場合は、そのクラスに[Serializable]属性がなければなりません。私の場合、シリアル化する不明なオブジェクトがあります。例えばUnknown型をXMLシリアル化する方法は?

私はこれをシリアル化したい:

public class UnKnownType 
{ 
    public string Name 
    { 
     get; 
     set; 
    } 
    public int Age 
    { 
     get; 
     set; 
    } 
    public DateTime DOB 
    { 
     get; 
     set; 

    } 
    public bool IsPrimary 
    { 
     get; 
     set; 
    } 
} 

私はSystem.Xml.Serialization.XmlSerializer.Serialize(たXmlWriterのXmlWriter、オブジェクトo、XmlSerializerNamespaces名前空間、文字列で

をシリアル化でこのエラーを取得しますSystem.Xml.Serialization.XmlSerializer.Serialize(たXmlWriterたXmlWriter、オブジェクトo、XmlSerializerNamespaces名前空間、文字列encodingStyleを)System.Xml.Serialization.XmlSerializer.Serialize(たXmlWriterたXmlWriter、物体O、XmlSerializerNamespaces namespacで でencodingStyleを、文字列ID) ES)ConsoleApplication4.Program.MainでSystem.Xml.Serialization.XmlSerializer.Serialize(たTextWriterたTextWriter、物体O) でSystem.Xml.Serialization.XmlSerializer.Serialize(たTextWriterたTextWriter、オブジェクトo、XmlSerializerNamespaces名前空間) で(文字列[] args)D:\ New Adventures \ ConsoleApplication4 \ ConsoleApplication4 \ Program.cs:行29

+0

いくつかの関連コードを投稿できますか? –

+0

最悪の場合、 'UnknownObject'を' Object'にキャストしてシリアライズできます。 – Bazzz

答えて

3

XMLシリアル化にはSerializableAttributeは必要ありません。 ただし、public getterとsetterを持つプロパティのみがシリアル化されていることに注意する必要があります。

+0

Thanx fredrick :) – BreakHead

2

あなたは、このような

class MyClass 
{ 
    IMyInterface Something{get; set;} 
} 

としてクラスを持っている意味なら、あなたはインスタンス化の時点でのXmlSerializerにIMyInterfaceの種類を伝えることができます:

MyImplementationIMyInterfaceを実装
XmlSerializer xs = new XmlSerializer(typeof(MyClass), new Type[] {typeof(MyImplementation)} 

0

XamlWriter.Save(unknownObject)を使用してください。それは非常にスマートなシリアライザです:-)