DataContract,默认DataMember值将在应用程序之间api工作

问题描述 投票:0回答:1

我有这样的课程:

[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
    }

有一个像GetMyInfo(MyInfo myInfo)这样公开的api,其中使用了上面的类。

我的四个(app1,app2,app3,app4)应用程序正在使用此合同。截至目前,一切运行正常。但是我有一个新的要求,那就是将一个新成员添加到作为字典的界面中。

新班级将是这样:

[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
        Dictionary<string, string> parameter = null;
    }

现在我的问题是,因为类定义已更改,所以我的app1和app2将使用新的类定义进行编译,因为因为app1和app2要求字典,而app3和app4则不需要,这就是为什么我创建字典作为默认参数。

现在,如果app3或app4不使用新的类定义进行编译,并调用GetMyInfo(MyInfo myInfo),则一切正常,我的意思是所有序列化都不会中断。

c# wcf datacontractserializer datacontract
1个回答
0
投票

根据您的描述,我制作了一个可以正常运行的演示。我没有发现任何问题。

Client1使用这样的类:

        [DataContract, Serializable]
        public class MyInfo
       {
          [DataMember(Name = "firstName")]
          public string firstName { get; set; }
          [DataMember(Name = "fullName")]
          public string fullName { get; set; }
       }

服务器端将收到此消息:

enter image description here

Client2使用这样的类:

        [DataContract, Serializable]
        public class MyInfo
       {
            [DataMember(Name = "firstName")]
            public string firstName { get; set; }
            [DataMember(Name = "fullName")]
            public string fullName { get; set; }
            [DataMember(Name = "parameter")]
            public Dictionary<string, string> parameter { get; set;}
       }

服务器端将收到此消息:enter image description here

服务器端使用与client2相同的类。

© www.soinside.com 2019 - 2024. All rights reserved.