Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NetDataContractSerializer和程序集版本不匹配_C#_Serialization_Versioning_Netdatacontractserializer - Fatal编程技术网

C# NetDataContractSerializer和程序集版本不匹配

C# NetDataContractSerializer和程序集版本不匹配,c#,serialization,versioning,netdatacontractserializer,C#,Serialization,Versioning,Netdatacontractserializer,我正在使用NetDataContractSerializer在应用程序之间交换数据。我希望当程序集版本不匹配时,ReadObject方法引发异常 现在,例如,当我从程序集版本1.0.0.0序列化我的对象,然后使用相同的程序集反序列化它,但现在是版本1.0.0.1时,NetDataContractSerializer愉快地吞下流并反序列化,没有问题 当版本不匹配时,是否可以中止反序列化过程 更新:我需要版本不容忍,因为很多原因。这既是客户的要求,也是绝对确保导入处理从同一版本的应用程序导出的文件的

我正在使用NetDataContractSerializer在应用程序之间交换数据。我希望当程序集版本不匹配时,ReadObject方法引发异常

现在,例如,当我从程序集版本1.0.0.0序列化我的对象,然后使用相同的程序集反序列化它,但现在是版本1.0.0.1时,NetDataContractSerializer愉快地吞下流并反序列化,没有问题

当版本不匹配时,是否可以中止反序列化过程

更新:我需要版本不容忍,因为很多原因。这既是客户的要求,也是绝对确保导入处理从同一版本的应用程序导出的文件的要求。对于我的应用程序,更改版本会使上一个导入过程变得无用,因为版本更改等于或多或少涉及的内部结构更改。

丑陋但有效(理想情况下是在根对象上):


等待为什么要引入版本控制?对大多数人来说,问题恰恰相反……这很奇怪。。。我在这里是因为我有相反的问题。它正在引发FileLoadException,因为在我尝试反序列化()时程序集的强名称已更改。@Will:您应该使用
FormatterAssemblyStyle。Simple
@Will-AssemblyLoad事件对于修复strig名称非常有用changes@MarcGravell当前位置我不希望走那么远;此外,我不确定国家数据中心是否会尊重这种干预。但是FormatterAssemblyStyle是有效的。@我会放弃使用基于类型的序列化程序吗?老实说,NDC并没有那么快
[DataMember]
private string AppVersion {
    get { return CurrentAppVersion; }
    set {
        if(value != CurrentAppVersion) throw new InvalidOperationException(
            "Data from version " + value + " is not compatible");
    }
}
private const string CurrentAppVersion = "1.0.11a";