2

私はこのようなクラスを持っています

public class Record
{
    public Int32 TotalTrail { get; set; }
    public TimeSpan MyTimeSpan { get; set; }
    public DateTime MyDateTime { get; set; }
}

そして、私はそれのオブジェクトを保持するためのリストを持っています:

List<Record> _records;

次に、リストをシリアル化したい場合:

serializer.Serialize(stream、_records);

上記の行にランタイムエラーがあります:

System.Collections.Generic.List`1 [[SimpleGame.Record、SimpleGame、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null]]タイプのオブジェクトをSimpleGame.Recordタイプのオブジェクトに割り当てることはできません。

リストをシリアル化できないからですか?どうすればこれを修正できますか?

4

5 に答える 5

5

List<Record>代わりに、タイプのシリアライザーを作成する必要がありますRecord

于 2012-06-03T06:50:30.203 に答える
1

XMLにシリアル化する場合は、シリアル化可能を実装する必要はありません。以下は、任意のオブジェクトをファイルに書き込むための簡単な方法です。

Dim s As System.Xml.Serialization.XmlSerializer
Using fs As New IO.FileStream(thePath, FileMode.Create, FileAccess.Write, FileShare.Write)
    Using w As System.Xml.XmlTextWriter = New System.Xml.XmlTextWriter(fs, System.Text.Encoding.Default)
        s = New System.Xml.Serialization.XmlSerializer(GetType(T))
        w.Formatting = Xml.Formatting.Indented
        s.Serialize(w, m_objectToSerialize)
    End Using
End Using
于 2012-06-03T06:40:45.050 に答える
0

オブジェクトがであることを指定する必要があると思いますSerializable。以下に例を示します。

[Serializable()]
public class Record 
{ 
    public Int32 TotalTrail { get; set; } 
    public TimeSpan MyTimeSpan { get; set; } 
    public DateTime MyDateTime { get; set; } 
}

別のソル

ISerializableあなたはインターフェースを実装することができます

public class Record : ISerializable
{ 
    public Int32 TotalTrail { get; set; } 
    public TimeSpan MyTimeSpan { get; set; } 
    public DateTime MyDateTime { get; set; } 
}
于 2012-06-03T06:25:58.177 に答える
0

クラスをシリアル化可能にする...このリンクを確認してください。http://msdn.microsoft.com/en-us/library/4abbf6k0.aspx

于 2012-06-03T06:39:40.317 に答える
0

私はこれと同じ問題を抱えていました。私がしたことは、あなたがリストを作成したクラスに行き、パラメーターのないコンストラクターを追加したことです。シリアル化がパラメーターのないコンストラクターで機能することをどこかで読みました。私がこれをしたら。それは魅力のように機能しました!それがうまくいったことを願っています..このようなもの

public class InventoryType
{
    public DateTime Date { get; set; }
    public int ID { get; set; }
    public string RoomT { get; set; }
    public int Quantity { get; set; }

    public InventoryType() { }

    public InventoryType(DateTime date, int id, string roomT, int quantity)
    {

        this.Date = date;
        this.ID = id;
        this.RoomT = roomT;
        this.Quantity = quantity;
    }

    public override string ToString()
    {           
        return "Date: " + Date + "\nID: " + ID + "\nRoom Type: " + RoomT + "\nQuantity: " + Quantity;
    }
}
于 2017-09-23T22:25:33.933 に答える