Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 如何从wcf响应的ExtensionDataObject获取值_C#_Asp.net_Wcf - Fatal编程技术网

C# 如何从wcf响应的ExtensionDataObject获取值

C# 如何从wcf响应的ExtensionDataObject获取值,c#,asp.net,wcf,C#,Asp.net,Wcf,我有一个WCF服务,它在运行时将ExtensionDataObject作为附加快照返回: 我对这些对象的获取值感到震惊。请任何人在此提供帮助: 已尝试使用反射处理以下代码,这会引发参数计数丢失异常 List<System.Runtime.Serialization.ExtensionDataObject> extData = temp.Select(x => x.ExtensionData).ToList(); var GetCountry = e

我有一个WCF服务,它在运行时将ExtensionDataObject作为附加快照返回: 我对这些对象的获取值感到震惊。请任何人在此提供帮助:

已尝试使用反射处理以下代码,这会引发参数计数丢失异常

  List<System.Runtime.Serialization.ExtensionDataObject> extData = temp.Select(x => x.ExtensionData).ToList();
             var GetCountry = extData.GetType().GetProperties();

              string Country = string.Empty;
                foreach (var property in GetCountry)
                {
                    string name = property.Name;
                    object value = property.GetValue(extData, null);
                    if (name == "Country")
                        Country = value.ToString();

                }
List extData=temp.Select(x=>x.ExtensionData.ToList();
var GetCountry=extData.GetType().GetProperties();
string Country=string.Empty;
foreach(GetCountry中的var属性)
{
字符串名称=property.name;
object value=property.GetValue(extData,null);
如果(名称=“国家”)
Country=value.ToString();
}

生成
Extensiondataobject
字段是为了控制服务器和客户端之间的数据协定不兼容,因此它将返回一个名为
Extensiondataobject
的字段。换句话说,客户机数据契约实现了
IExtensionDataObject
接口

    [DataContract(Namespace="abcd")]
    public class Product: IExtensibleDataObject
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
        public ExtensionDataObject ExtensionData { get ; set ; }
}
如果我们通过Fiddle捕获这个请求,您甚至可以直接看到所有数据。 总之,您只需要将
Country
属性添加到X对象的数据类中。它将自动反序列化。此类应该是客户端数据协定类,而不是服务器端数据类。

最后,这些字段的值似乎为空。我们应该确保服务器和客户端数据契约具有相同的命名空间。它不能是默认值()。正如我在上面定义的,这个名称空间属性应该与服务器端值一致。

如果有什么我能帮忙的,请随时告诉我

只需将这些属性添加到类中,该类是
x
对象-它们将被自动反序列化。我无法将服务类修改为其第三方服务。还有什么替代方法?