我有一个帮助移动设备同步的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错误。我该怎么办?
答案 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
{
}