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

本文关键字:种类 类型 数组 对象 返回 服务 Json 格式 WCF | 更新日期: 2023-09-27 18:33:24

我有一个帮助移动设备同步的 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 访问它时,我都会收到以下错误ERR_CONNECTION_RESET Chrome 上的错误。我该怎么办?

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

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

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

跨服务边界传递 system.object 类型的实例既荒谬又违背了 SOA 的原则之一:边界是明确的

如果需要能够传递多个类型,则 WCF 提供了 ServiceKnownType 属性,该属性提供了一种跨服务边界以多态方式处理多个类型的实例的方法。

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