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))
    ...