0

結果が次のようになるように、コードをシリアル化しようとしています。

<BOX>
    <COMMAND name= "Person">
        <PARAMS>
            <NAME>TOM</NAME>
            <LASTNAME>MILL</LASTNAME>
        </PARAMS>
    </COMMAND>
<PIN> 000000 </PIN>
</BOX>

しかし、結果は

<BOX>
    <COMMAND name= "Item">
        <PARAMS>
            <ITEM>TOY</ITEM>
            <PRICE>MILL</PRICE>
            <NUM>111</NUM>
        </PARAMS>
    </COMMAND>
<PIN> 000000 </PIN>
</BOX>

変化するものの1つは<PARAMS>要素です。「リサイクル」できるクラス構造を作りたい

public class Box
{
    public class Command
    {
        [XmlAttribute]
        public string name;

        public Object PARAMS { get; set; }//<--- HERE
    }
}

PARAMSこれらの他のクラスのいずれかを呼び出す可能性のある未定義の型になりたい

public class Person:Box
{
    public string LastName { get; set; }
    public string FirstName { get; set; }
}

また

 public class Item:Box
 {
     public string ItemName { get; set; }
     public string Info { get; set; }
 }

これは私のコードです

BOX AddPerson = new BOX ();
Person person1 = new Person();
BOX.Command hey = new BOX.Command();

AddPerson.PIN= "000000";
hey.name = "AddPerson";

person1.FirstName = "TOM";
person1.LastName = "MILL";

hey.PARAMS = person1; //<<--THIS PART I want to be able to assign Person or Item

AddPerson.COMMAND = hey;

Console.WriteLine();
Console.ReadLine();
serializer.Serialize(textWriter, AddPerson);
Console.WriteLine(textWriter.ToString());

このアイデアを実装するためのより良い方法があるかどうかを確認したいと思います。

4

0 に答える 0