比方說,我有一個接口,AnInterface
的一個實例的序列化的字節,像這樣:你可以反序列化一個沒有類型定義的接口實例嗎?
AnInterface instance = new ConcreteClass();
serializeToDatabase(instance);
是否有可能做這樣的事情:
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
byte[] bytes = bytesSavedToDB;
stream.Write(bytes, 0, bytes.Length);
stream.Position = 0;
AnInterface instance = (AnInterface) formatter.Deserialize(stream);
,而不必爲ConcreteClass
的定義是什麼?
不,你不能,你需要基礎類型。 –
什麼阻止你知道序列化類的類型? – ryanyuyu
BinaryFormatter使用Object.GetType(),你不能隱藏它真的*是一個ConcreteClass的事實。故意混淆它並不是一個好主意,如果你希望從現在開始或者在另外一臺機器上再次反序列化,你真的真的關心具體的類。此時,ConcreteClass的* exact *相同版本需要再次可用。 –