オブジェクトの配列を逆シリアル化するためのSOAPサービスの取得に問題があります。配列の最初のメンバーでの唯一の読み取りであり、他には何もありません。これが私のコードです:
public void StoreCredentials(Credentials credentials)
{
Credentials[] credsArray;
var soap = new SoapFormatter();
var stream = new FileStream(_path, FileMode.OpenOrCreate);
try
{
credsArray = (Credentials[])soap.Deserialize(stream);
var credsList = credsArray.ToList();
credsList.Add(credentials);
credsArray = credsList.ToArray();
}
catch (SerializationException)
{
credsArray = new[] {credentials};
}
soap.Serialize(stream, credsArray);
stream.Close();
}
2つのクレデンシャルオブジェクトをファイルに追加する簡単な単体テストを作成しました。出力は正しく見え、両方のクレデンシャルセットが存在しますが、テストを実行して3番目のセットをファイルに追加するとsoap.Deserialize(stream)行読み取り元のファイルに2つのエントリが含まれている場合でも、エントリが1つしかない配列を返します。私はここで何か間違ったことをしていますか?これを行うためのより良い/より簡単な方法はありますか?助けてください!