我有这样的课程:
[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)
,则一切正常,我的意思是所有序列化都不会中断。
根据您的描述,我制作了一个可以正常运行的演示。我没有发现任何问题。
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相同的类。