DataContract,默认 DataMember 值将 api 在应用程序之间工作
DataContract, default DataMember value will api work between applications
我有一个 class 这样的:
[DataContract, Serializable]
public class MyInfo
{
string firstName;
string fullName;
}
有一个api像这样暴露GetMyInfo(MyInfo myInfo)
,其中使用了上面的class。
我的四个(app1、app2、app3、app4)应用程序正在使用此合约。
截至目前,一切正常 运行。但是我有一个新的要求,要在接口中添加一个新成员,这是一个字典。
新的class会是这样的:
[DataContract, Serializable]
public class MyInfo
{
string firstName;
string fullName;
Dictionary<string, string> parameter = null;
}
现在我的问题是,由于 class 定义已更改,我的 app1 和 app2 将使用新的 class 定义进行编译,因为 app1 和 app2 需要字典,而 app3 和 app4 不需要想要那个,这就是为什么我创建字典作为默认参数的原因。
现在,如果 app3 或 app4 没有使用新的 class 定义进行编译并调用 GetMyInfo(MyInfo myInfo)
事情会起作用吗,我的意思是所有序列化都不会中断。
根据你的描述,我做了一个demo,可以运行 normally.I没发现什么问题。
Client1 使用这样的 class:
[DataContract, Serializable]
public class MyInfo
{
[DataMember(Name = "firstName")]
public string firstName { get; set; }
[DataMember(Name = "fullName")]
public string fullName { get; set; }
}
服务器端将收到此消息:
Client2 使用这样的 class:
[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;}
}
服务器端将收到此消息:
服务器端使用与客户端2相同的classes。
我有一个 class 这样的:
[DataContract, Serializable]
public class MyInfo
{
string firstName;
string fullName;
}
有一个api像这样暴露GetMyInfo(MyInfo myInfo)
,其中使用了上面的class。
我的四个(app1、app2、app3、app4)应用程序正在使用此合约。 截至目前,一切正常 运行。但是我有一个新的要求,要在接口中添加一个新成员,这是一个字典。
新的class会是这样的:
[DataContract, Serializable]
public class MyInfo
{
string firstName;
string fullName;
Dictionary<string, string> parameter = null;
}
现在我的问题是,由于 class 定义已更改,我的 app1 和 app2 将使用新的 class 定义进行编译,因为 app1 和 app2 需要字典,而 app3 和 app4 不需要想要那个,这就是为什么我创建字典作为默认参数的原因。
现在,如果 app3 或 app4 没有使用新的 class 定义进行编译并调用 GetMyInfo(MyInfo myInfo)
事情会起作用吗,我的意思是所有序列化都不会中断。
根据你的描述,我做了一个demo,可以运行 normally.I没发现什么问题。
Client1 使用这样的 class:
[DataContract, Serializable]
public class MyInfo
{
[DataMember(Name = "firstName")]
public string firstName { get; set; }
[DataMember(Name = "fullName")]
public string fullName { get; set; }
}
服务器端将收到此消息:
Client2 使用这样的 class:
[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;}
}
服务器端将收到此消息:
服务器端使用与客户端2相同的classes。