私はこの問題に悩まされています。私はどこでも答えを探していますが、私の問題に合ったものは見つかりませんでした。オブジェクトをシリアライズしてバイナリファイルに保存したい場合、deserialize
をリストとして複数のレコード行を返すので、それをリストとして使用したいと思います。オブジェクトをシリアライズしてリストとしてデシリアライズします<object> C#
だから、これは私のクラス
[Serializable]
public class DTOMultiConfig
{
public string Key { get; set; }
public string KeyValue { get; set; }
}
[Serializable]
public class DTOMultiConfigs : List<DTOMultiConfig>
{
public void Dispose()
{
}
}
だと私は私がオンラインで見つけるこれらのメソッドを使用しています。これは私が私のオブジェクトをシリアル化する方法、この部分は、私はそれがで働いていないので、私はそれを間違った方法をやっていると確信している、わからないんだけど、これは私がdeserialize
メソッドを使用する方法である
public void Editor_Config(DTOMultiConfig dto)
{
if (dto.ID == 0)//new
{
dto.ID = 0;
WriteToBinaryFile(BinPath, dto, true);
}
else//edit
{
}
}
public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false)
{
using (Stream stream = System.IO.File.Open(filePath, append ? FileMode.Append : FileMode.Create))
{
var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryFormatter.Serialize(stream, objectToWrite);
}
}
作品ですすべて。 ReadFromBinaryFile
は 'return'ステートメントの直前で動作しなくなります。
public PartialViewResult ShowListOfConfigs()
{
List<DTOMultiConfig> dto = new List<DTOMultiConfig>();
//DESERIALIZE
dto = ReadFromBinaryFile<List<DTOMultiConfig>>(BinPath);
return PartialView("_ListOfConfigs", dto);
}
public static T ReadFromBinaryFile<T>(string filePath)
{
using (Stream stream = System.IO.File.Open(filePath, FileMode.Open))
{
var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
return (T)binaryFormatter.Deserialize(stream);
}
}
何らかの説明があれば、どんな答えでも分かります。
例外はありますか?あなたの問題は、単一のDTOMultiConfigインスタンスを作成するが、あなたのタイプの単一インスタンスのバイナリ表現がリストのバイナリ表現と異なるために動作できないListを読み込もうとしていると思われる。 –
dnickless
こんにちは、応答ありがとう、私はこのexeptionを取得しています{"'MVCHowTo.Models.DTOMultiConfig' '[MVCHowTo.Models.DTOMultiConfig]'をタイプする 'MVCHowTo.Models.DTOMultiConfig'オブジェクトを 'System.Collections.Generic.List'1にキャストすることができません。 "} –
バイナリファイルにも書き込むときにdtoMultiConfigをリストにする必要がありますか?一度に1レコードしか書いていないので、 –