我想在服務器和客戶端之間發送指令對象。我想能夠序列化一個接口的實現,然後,當我反序列化它時,我想將它反序列化爲通用接口類型(同時它保持它被序列化爲的實際類型)。序列化C#對象,想要反序列化到接口
我試着用默認的BinarySerializer做這件事,但是我在通過線路發送信息時遇到了問題。
我也嘗試過使用Protobuf來序列化,但是使用Protobuf你必須知道你想要反序列化到的對象的完全限定類型。 IE:
Serializer.Deserialize<Implementation>(stream);
這違背多態性的點:
public interface IExample
{
void foo();
}
public class Implementation : IExample
{
void foo() { Console.WriteLine("This is an implementation!"); }
}
只能與被反序列化。
是否有序列化庫我可以使用deserialize方法的調用者不需要知道對象的完全限定類型?
IE:
Implementation imp = new Implementation();
Stream inStream = Serialize(implementation);
IExample example = Deserialize(inStream);
example.foo();
這應打印 「這是一個實現!」到控制檯。
http://stackoverflow.com/q/775647 –
http://stackoverflow.com/q/15480780 –