我在获取 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();
}
我编写了一个简单的单元测试,它将两个 Credentials 对象添加到文件中,输出看起来正确,两组凭据都存在,但是当我运行测试以将第三组添加到文件时,soap.Deserialize(stream) 行返回一个只有一个条目的数组,即使它读取的文件包含两个条目。我在这里做错了吗?有没有更好/更简单的方法来做到这一点?请帮忙!