C# 反序列化错误:解析完成前遇到流结束
我在序列化和反序列化我创建的自定义对象时遇到问题。我不太清楚为什么会发生这个错误,我在代码中没有看到任何可能直接导致这个问题的东西。我在没有继承接口的情况下测试了它,但它仍然抛出错误 接口:C# 反序列化错误:解析完成前遇到流结束,c#,serialization,binary,C#,Serialization,Binary,我在序列化和反序列化我创建的自定义对象时遇到问题。我不太清楚为什么会发生这个错误,我在代码中没有看到任何可能直接导致这个问题的东西。我在没有继承接口的情况下测试了它,但它仍然抛出错误 接口: public interface ITest { void LoadTest(string id, string className, string classMethod, bool isNegative, List<string> args, string expectedRetur
public interface ITest
{
void LoadTest(string id, string className, string classMethod, bool isNegative, List<string> args, string expectedReturn);
string GetId();
string GetClassName();
string GetMethod();
List<string> GetArgs();
string GetExpectedReturn();
bool IsNegative();
bool HasRan();
void RunTest(...);
string GetTestReturn();
bool GetTestResult();
}
您不能仅仅将输出视为字符串;如果它包含NUL(Chr(0)),字符串将在该点被截断。使用
Convert.ToBase64String()
而不是StreamReader
和StreamWriter
。这些是用于文本的,而不是您正在使用的文本
formatter.Serialize(ms, test);
return Convert.ToBase64String(ms.ToArray());
要初始化memstream进行反序列化,请执行以下操作:
using (var ms = new MemoryStream(Convert.FromBase64String(b64str))
...
您不能仅仅将输出视为字符串;如果它包含NUL(Chr(0)),字符串将在该点被截断。使用
Convert.ToBase64String()
代替streamreader我想在streamreader上使用它吗?如果不使用StreamReader,就无法将字符串从MemoryStream中取出,对吗?Convert.ToBase64String(ms.ToArray())
好的,所以我仍然无法将其转换回。我将sw.write更新为:sw.write(Convert.FromBase64String(data));这很好用。我觉得我甚至可以将这段代码移植到模板解决方案中。
formatter.Serialize(ms, test);
return Convert.ToBase64String(ms.ToArray());
using (var ms = new MemoryStream(Convert.FromBase64String(b64str))
...