4

System.IO BinaryReader をオーバーロードして、ファイル ストレージの目的でいくつかのクラスをシリアル化しています。辞書などの項目を実行しても問題はありませんでしたが、null 許容型では成功していません。することは可能ですか?具体的には、小数を試みていますか? と string? ですが、ソリューションを適応させるには、どのタイプでも機能するはずです。

特定のビジネス上の理由から、バイナリ シリアル化を行う必要があるため、そのために機能するソリューションのみに回答を限定してください。

たとえば...バイト配列の読み取り/書き込みには、次のメソッドを使用します。

    public byte[] ReadByteArray()
    {
        int len = ReadInt32();
        if (len > 0) return ReadBytes(len);
        if (len < 0) return null;
        return new byte[0];
    }

    public override void Write(byte[] b)
    {
        int len = b.Length;
        Write(len);
        if (len > 0) base.Write(b);
    }
4

2 に答える 2

-1
public decimal ReadDecimal()
{
    int len = ReadInt32();
    if (len > 0) return base.ReadDecimal();
    if (len < 0) return null;
    return new decimal;
}


public override void WriteDecimal(decimal d)
{
    if (d==null)
        WriteInt32(-1);
    else
    {
        WriteInt32(sizeof(d)); //16
        Write(d);
    }
}
于 2013-07-09T01:43:15.987 に答える