本帖最后由 拼音 于 2013-5-22 13:37 编辑
C# code
class Program
{
static void Main(string[] args)
{
Class1 c1 = new Class1();
c1.str1 = "100";
byte[] b1 = ObjectToBytes(c1);
Class2 c2 = (Class2)BytesToObject(b1);//这里转换为什么不行啊?
Object obj = BytesToObject(b1);
obj.GetType();
Console.WriteLine( obj.GetType());
Console.ReadKey();
}
/// <summary>
/// 序列化
/// </summary>
/// <param name="p_Object"></param>
/// <returns></returns>
public static byte[] ObjectToBytes(object p_Object)
{
BinaryFormatter _Formatter = new BinaryFormatter();
MemoryStream _Memory = new MemoryStream();
try
{
_Formatter.Serialize(_Memory, p_Object);
}
catch (Exception ex)
{
}
return _Memory.GetBuffer();
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="p_ObjectBytes"></param>
/// <returns></returns>
public static object BytesToObject(byte[] p_ObjectBytes)
{
BinaryFormatter _Formatter = new BinaryFormatter();
MemoryStream _MemStr = new MemoryStream(p_ObjectBytes);
try
{
return _Formatter.Deserialize(_MemStr);
}
catch (Exception ex)
{
return null;
}
}
}
类class1,class2都是只有一个字符串类型的属性。
注释处报:不能从class1转换成class2
想测试一下怎么接收远程发来的实例对象。 远程发送来的一般是xml 或者是json串,你应该把这些东西反序列化话为对象。而上面的操作,单独的两个不相关的类相互转化报错是正常的。可以是byte[],但是两边需要统一的序列化规则。 |