Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 如何从Json格式的WCF服务返回多种类型的对象数组?_C#_Wcf - Fatal编程技术网

C# 如何从Json格式的WCF服务返回多种类型的对象数组?

C# 如何从Json格式的WCF服务返回多种类型的对象数组?,c#,wcf,C#,Wcf,我有一个wcf应用程序,可以帮助移动设备进行同步。但是,我现在可以从一个方法返回多种类型的对象 我所做的是创建一个对象调用sync objects并将所有对象添加到sync objects数组中,然后将其序列化。下面将显示该类 [DataContract] public class CSyncObjects { [DataMember] public string DataType { get; set; } [DataMember

我有一个wcf应用程序,可以帮助移动设备进行同步。但是,我现在可以从一个方法返回多种类型的对象

我所做的是创建一个对象调用sync objects并将所有对象添加到sync objects数组中,然后将其序列化。下面将显示该类

[DataContract]
    public class CSyncObjects
    {
        [DataMember]
        public string DataType { get; set; }
        [DataMember]
        public object DataObject { get; set; }

        public CSyncObjects(string Type, object Object)
        {
            this.DataType = Type;
            this.DataObject = Object;
        }
    }

然而,每当我尝试通过url访问它时,我会在Chrome上收到以下错误ERR_CONNECTION_RESET error。我该怎么办?

您可以创建一个元组,以相同的方法返回多个内容

Tuple<int, string, bool> tuple = new Tuple<int, string, bool>(1, "dog", true);
return tuple;
Tuple-Tuple=新的Tuple(1,“dog”,true);
返回元组;

跨服务边界传递system.object类型的实例既没有意义,也违反了SOA:边界是明确的

如果您需要能够传递多个类型,那么WCF提供了,这为您提供了一种在服务边界上以多态方式处理多个类型实例的方法

只需创建一个基类来表示操作参数,然后通过ServiceKnownType属性使用支持的派生类型来修饰服务接口定义:

[ServiceContract]
[ServiceKnownType(typeof(RoadBike))]
[ServiceKnownType(typeof(AllTerrianBike))]
public Interface IBikeStoreFront
{
     [OperationContract]
     Bicycle GetBike(int bikeId);

     [OperationContract]
     void UpdateBike(Bicycle bike);  
} 

[DataContract]
public class Bicycle 
{
}

[DataContract]
public class RoadBike : Bicycle
{
}

[DataContract]
public class AllTerrianBike : Bicycle
{
}

我也有同样的问题,但我只是将每种类型都分离出来。您可能会遇到麻烦,因为WCF不知道如何序列化对象。它需要一个可序列化的已知类型。您的想法很好,但存在一个问题。会有多余的信息吗?因为没有填充每个属性