Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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# DataContract,默认DataMember值将在应用程序之间工作_C#_Wcf_Datacontractserializer_Datacontract - Fatal编程技术网

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

C# DataContract,默认DataMember值将在应用程序之间工作,c#,wcf,datacontractserializer,datacontract,C#,Wcf,Datacontractserializer,Datacontract,我有一门课是这样的: [DataContract, Serializable] public class MyInfo { string firstName; string fullName; } [DataContract, Serializable] public class MyInfo { string firstName; string fullName; Dict

我有一门课是这样的:

[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
    }
[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
        Dictionary<string, string> parameter = null;
    }
        [DataContract, Serializable]
        public class MyInfo
       {
          [DataMember(Name = "firstName")]
          public string firstName { get; set; }
          [DataMember(Name = "fullName")]
          public string fullName { get; set; }
       }
        [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;}
       }
有一个像GetMyInfoMyInfo这样公开的api,上面的类正在其中使用

我的四个App1、app2、app3、app4应用程序正在使用此合同。 到目前为止,一切都很顺利。但是我得到了一个新的要求,即向接口添加一个新成员,该接口是一个字典

新类将如下所示:

[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
    }
[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
        Dictionary<string, string> parameter = null;
    }
        [DataContract, Serializable]
        public class MyInfo
       {
          [DataMember(Name = "firstName")]
          public string firstName { get; set; }
          [DataMember(Name = "fullName")]
          public string fullName { get; set; }
       }
        [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;}
       }
现在我的问题是,由于类定义已更改,我的app1和app2将使用新的类定义编译,因为app1和app2需要字典,而app3和app4不需要字典,这就是我创建字典作为默认参数的原因


现在,如果app3或app4没有使用新的类定义编译,并且调用GetMyInfoMyInfo myInfo,那么这些东西会工作吗,我的意思是所有的序列化都不会中断。

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

Client1使用如下类:

[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
    }
[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
        Dictionary<string, string> parameter = null;
    }
        [DataContract, Serializable]
        public class MyInfo
       {
          [DataMember(Name = "firstName")]
          public string firstName { get; set; }
          [DataMember(Name = "fullName")]
          public string fullName { get; set; }
       }
        [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使用如下类:

[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
    }
[DataContract, Serializable]
    public class MyInfo
    {
        string firstName;
        string fullName;
        Dictionary<string, string> parameter = null;
    }
        [DataContract, Serializable]
        public class MyInfo
       {
          [DataMember(Name = "firstName")]
          public string firstName { get; set; }
          [DataMember(Name = "fullName")]
          public string fullName { get; set; }
       }
        [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相同的类