0

オブジェクト インスタンスのシリアル化で少し問題が発生したため、いくつかの疑似コードで説明します。

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 );
    }
}

誰にもこれに対する解決策がありますか?

XmlInclude私は結果なしで使用しようとしました。

その型を知らなくても Object をシリアライズすることさえ可能ですか?

4

2 に答える 2

0

迅速な対応に感謝しますが、XmlSerializer に 2 番目のパラメーターを指定することで、問題の解決策を見つけました。

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

そして、この方法で [XmlInclude(typeof(B))] をクラス A に追加する必要はありません...

于 2013-07-25T08:51:22.637 に答える