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

C#-序列化和反序列化方法,c#,serialization,web,C#,Serialization,Web,首先,如果其他地方已经回答了这一问题,那么很抱歉;我环顾了一下四周,但我在这个主题上找到的几条线索和几页内容让我有点困惑,因为我对序列化相当陌生。 我正在制作一个C#应用程序,希望能够通过互联网发送函数。在谷歌快速搜索之后,我发现了序列化。我尝试使用以下命令序列化和反序列化我的方法: public static string ObjectToString(object obj) { using (MemoryStream ms = new MemoryStream()) {

首先,如果其他地方已经回答了这一问题,那么很抱歉;我环顾了一下四周,但我在这个主题上找到的几条线索和几页内容让我有点困惑,因为我对序列化相当陌生。 我正在制作一个C#应用程序,希望能够通过互联网发送函数。在谷歌快速搜索之后,我发现了序列化。我尝试使用以下命令序列化和反序列化我的方法:

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发送方法吗? 对不起,如果这是一个愚蠢的问题

提前感谢,


-Matthew

方法是不可序列化的,因此不;你不能这样做


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

分布式计算的第一条规则:不要分发对象谢谢您的帮助!是否可以使用DLL来实现这一点?@user52303您能澄清一下吗?DLL和网络不是类似的概念,它们在服务器上的DLL中有方法,可以下载以利用它们的功能。我不知道引用DLL是如何工作的——它们是在编译时实现的,还是可以被动态引用?@user52303它们可以被动态加载(
Assembly.Load
),但在类型安全性、知道存在什么方法等方面,您会损失很多。在这一点上,除了反射之外,您什么都不会做。它能工作吗?当然这样做明智吗?不是真的。也许你可以描述一下你试图解决的总体问题。