gpt4 book ai didi

c# - 反序列化异常: Unable to find assembly

转载 作者:太空狗 更新时间:2023-10-29 18:22:43 27 4
gpt4 key购买 nike

我正在序列化一些数据,例如字段和自定义类,以创建二进制数据(字节数组)。

然后我想反序列化它从二进制数据返回到字段和类。

但我得到一个异常(exception)。如果这两种方法在同一个程序集中发生,一切都会很好——但事实并非如此。

我在一个程序集中进行序列化,在另一个程序中进行反序列化。这也是 excaption 说的:无法找到程序集“MyAssamblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”。

注意 1:我对取回字段没有任何问题,只是类导致了它们。

注意 2:我在两个程序集中都有相同的类。

最佳答案

NOTE 2: I have this same class in both assemblies

不,你不知道。至少,就运行时而言不是。您有两种不同的类型,它们恰好具有相同的名称。类型由其程序集定义。因此,“SomeType in AssemblyA”与“SomeType in AssemblyB”完全不同,即使它们恰好是从同一源文件编译而来。

BinaryFormatter 使用类型信息,所以这行不通。一种选择是将类型移动到其他项目都引用的库 dll - 然后它只定义一次,它会很高兴。

另一种选择是使用基于契约的序列化器(而不是基于类型的序列化器)。这意味着“看起来足够相似的类”很好,即使它们在不同的程序集中(并且可能有不同的来源,只要它“足够相似”)。适用于此的序列化器示例包括(加上其他一些)XmlSerializer、DataContractSerializer(但不包括 NetDataContractSerializer)、JavaScriptSerializer 或 protobuf-net(如果您需要密集的原始二进制文件)。

关于c# - 反序列化异常: Unable to find assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090955/

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