我想在服务器和客户端之间发送指令对象。我希望能够序列化接口的实现,然后,当我反序列化它时,我想将它反序列化为通用接口类型(同时它保持它被序列化为的实际类型)。
我尝试使用默认的 BinarySerializer 执行此操作,但在通过网络发送信息时遇到了问题。
我也尝试使用 Protobuf 进行序列化,但使用 Protobuf 您必须知道要反序列化的对象的完全限定类型。IE:
public interface IExample
{
void foo();
}
public class Implementation : IExample
{
void foo() { Console.WriteLine("This is an implementation!"); }
}
只能通过以下方式反序列化:
Serializer.Deserialize<Implementation>(stream);
这违背了多态性的观点。
是否有我可以使用的序列化库,其中反序列化方法的调用者不需要知道对象的完全限定类型?
IE:
Implementation imp = new Implementation();
Stream inStream = Serialize(implementation);
IExample example = Deserialize(inStream);
example.foo();
这应该打印“这是一个实现!” 到控制台。