0

我有这样的课:

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

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

我的四个(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)可以正常工作,我的意思是所有的序列化并且什么都不会中断。

4

1 回答 1

1

根据你的描述,我做了一个demo,可以正常运行。没发现什么问题。

Client1 使用这样的类:

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

服务器端将收到此消息:

在此处输入图像描述

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;}
       }

服务器端将收到此消息: 在此处输入图像描述

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

于 2020-05-20T08:48:16.613 回答