案例:
在不同的应用程序域之间传递无法序列化的参数。
以下是我想要在远程域中调用的一些方法;
public RemoteClass
{
public Test(Class1 obj);
public Test(List<Class1> obj);
}
定义:
Class1 : un-serializable
[Serializable]
Class2 : Class1 , ISerializable //mark Class2 serializable
{
//.....
}
以下是用于测试的代码:
using (MemoryStream s = new MemoryStream())
{
BinaryFormatter f = new BinaryFormatter();
f.Serialize(s, obj);
}
测试结果:
obj result
Class1 obj=new Class1(); exception
Class1 obj=new Class2(); success
List<Class1> obj=new List<Class1); exception when obj contain some element;
obj.Add(new Class1();
List<Class1> obj=new List<Class1); exception when obj contain some element; //how???
obj.Add(new Class2();
List<Class2> obj=new List<Class2); success;
obj.Add(new Class2();
Class1不是可序列化的类,我无法修改它,因此我定义了Class2,继承自Class1并实现ISerializable接口。当一个方法需要一个Class1
的实例时,我可以传递Class2
的实例来获得测试结果,这个解决方案很成功,但是对于List<Class1>
却不起作用。