如何从Json Format WCF服务返回多种类型的对象数组?

时间:2016-02-05 09:35:28

标签: c# wcf

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

我所做的是创建一个对象调用同步对象,并将所有对象添加到同步对象数组,然后将其序列化。以下将显示该课程。

[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错误。我该怎么办?

2 个答案:

答案 0 :(得分:1)

你可以创建一个元组,以相同的方法返回多个东西。

Tuple<int, string, bool> tuple = new Tuple<int, string, bool>(1, "dog", true);
return tuple;

答案 1 :(得分:0)

在服务边界上传递system.object类型的实例既荒谬又打破了SOA的tenet one Boundaries is explicit

如果您需要能够传递多种类型,那么WCF会提供ServiceKnownType attribute,这使您可以通过服务边界以多态方式处理多种类型的实例。

只需创建一个基类来表示操作参数,然后通过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
{
}