C#对象为字符串和后退

我的问题:我有一个动态代码编译器。 可以编译一堆代码。 de代码的其余部分。 (导入,命名空间,类,主函数)已经存在。 将snippit插入其中然后将其编译为程序集并执行。 这就是用户能够执行代码snippit的方式。 main函数(执行snippit的地方)有一个返回类型的对象。 此snippit在远程计算机上执行。 代码由客户端发送到Web服务器。 远程计算机从Web服务器读取代码并执行它。 在远程计算机上,我可以轻松查看返回对象的类型及其值。 Hower我只能向网络服务器发送字符串。

问题:如何将对象转换为字符串,无论类型是什么以及如何将其转换回来?

尝试:我尝试使用ToString(),使用int,string,double和bool时工作正常。 但是图像或其他类型是不可行的,因为我还需要能够将其转换回来:)

如果有人可以帮助我,我会很高兴:)

问候

使用BinaryFormatter序列化对象,然后将字节作为字符串返回(Base64编码)。 向后执行可以为您提供物体。

public string ObjectToString(object obj) { using (MemoryStream ms = new MemoryStream()) { new BinaryFormatter().Serialize(ms, obj); return Convert.ToBase64String(ms.ToArray()); } } public 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); } } 

您必须创建一个转换方法来显示它并将其序列化以便能够来回转换它。

例如:

  public static string ConvertToDisplayString(object o) { if (o == null) return "null"; var type = o.GetType(); if (type == typeof(YourType)) { return ((YourType)o).Property; } else { return o.ToString(); } }