C#-序列化和反序列化方法
首先,如果其他地方已经回答了这一问题,那么很抱歉;我环顾了一下四周,但我在这个主题上找到的几条线索和几页内容让我有点困惑,因为我对序列化相当陌生。 我正在制作一个C#应用程序,希望能够通过互联网发送函数。在谷歌快速搜索之后,我发现了序列化。我尝试使用以下命令序列化和反序列化我的方法:C#-序列化和反序列化方法,c#,serialization,web,C#,Serialization,Web,首先,如果其他地方已经回答了这一问题,那么很抱歉;我环顾了一下四周,但我在这个主题上找到的几条线索和几页内容让我有点困惑,因为我对序列化相当陌生。 我正在制作一个C#应用程序,希望能够通过互联网发送函数。在谷歌快速搜索之后,我发现了序列化。我尝试使用以下命令序列化和反序列化我的方法: public static string ObjectToString(object obj) { using (MemoryStream ms = new MemoryStream()) {
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
),但在类型安全性、知道存在什么方法等方面,您会损失很多。在这一点上,除了反射之外,您什么都不会做。它能工作吗?当然这样做明智吗?不是真的。也许你可以描述一下你试图解决的总体问题。