C# - 序列化和反序列化方法

时间:2016-12-16 17:42:01

标签: c# serialization web

首先,对不起,如果这已在其他地方得到解答;我环顾四周,但是我在这个主题上找到的几个主题和页面让我感到很困惑,因为我对序列化很新。 我正在制作一个C#应用程序,我希望能够通过Internet发送一个函数。快速谷歌搜索后,我遇到了序列化。我尝试使用以下代码序列化和反序列化我的方法:

public static string ObjectToString(object obj)
{
    using (MemoryStream ms = new MemoryStream())
    {
        new BinaryFormatter().Serialize(ms, obj);
        return Convert.ToBase64String(ms.ToArray());
    }
}

public static object StringToObject(string base64String)
{
    byte[] bytes = Convert.FromBase64String(base64String);
    using (MemoryStream ms = new MemoryStream(bytes, 0, bytes.Length))
    {
        ms.Write(bytes, 0, bytes.Length);
        ms.Position = 0;
        return new BinaryFormatter().Deserialize(ms);
    }
}

但是在尝试转换为字符串时它引发了异常。我向它添加了[Serializable()],然后该方法什么也没做。

经过一些谷歌搜索,我发现在C#中你不能用默认方法做到这一点。所以可以这样做,如果没有,是否有任何实用的方法可以通过TcpClient发送方法? 对不起,如果这是一个愚蠢的问题。

提前致谢,

马修

1 个答案:

答案 0 :(得分:1)

方法不可序列化,所以没有;你不能这样做。

如果您正在尝试进行RPC调用;您可以序列化名称和参数,以便在另一侧使用反射,或者只使用像WCF这样的现有框架。