gpt4 book ai didi

c# - 您可以在没有类型定义的情况下反序列化接口(interface)实例吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:51 25 4
gpt4 key购买 nike

假设我有一个接口(interface)实例的序列化字节,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 的定义?

最佳答案

BinaryFormatter 将有关类型的信息保存到二进制流中。它使用该信息在反序列化期间重建对象图。因此,您可以在不知道它包含什么对象的情况下反序列化流。

但是,所有被序列化的具体类在反序列化期间都应该是可加载的。实际上,这意味着保存它们的程序集应该位于应用程序文件夹、GAC 中,或者通过其他方式加载到内存中。

formatter.Deserialize 仅返回 object,您可以将其转换为接口(interface)或具体类型。

关于c# - 您可以在没有类型定义的情况下反序列化接口(interface)实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com