从web方法返回一组对象

时间:2010-04-20 16:43:32

标签: c# .net

如何从web方法返回一组对象?这个对象集合可以是不同类型的 - 比如这3个类,

private class ClassA 
{
  int A1;
  int A2;
}

private class ClassB
{
  int B1;
}

private class ClassC
{
  int C1;
}

ClassA objA = new ClassA(...);
ClassB objB = new ClassB(...);
ClassC objC = new ClassC(...);

如何从方法返回对象,objA,objB和objC?

3 个答案:

答案 0 :(得分:3)

来自相同方法的不同可能结果?这将是丑陋的,并且不允许存在严格的模式(思考:WSDL)。也许在你返回的单一类型上封装所有4个选项?或者使用某种继承和[XmlInclude]。如果是多个值,您可以返回List<TheBaseType>

如果你的意思是“我想把所有这些都打到方法中”,那就把它们包起来:

public class MyReturnType {
    public ClassA A { get;set; }
    public ClassB B { get;set; }
    public ClassC C { get;set; }
}

并为多个值返回MyReturnType(或List<MyReturnType>)的实例。

答案 1 :(得分:0)

将它们作为数组或列表返回。我面前没有IDE,但它应该像

[WebMethod]
public object[] GetObjects()
{
   ...
   return new object[] { objA, objB, objC };
}

如果它们从相同的基类或接口继承,那就更好了。

答案 2 :(得分:0)

您可以执行以下操作之一:

  • 拥有一个包含所有这3个对象的自定义对象(不是列表,而是作为单独的对象)并传递此复合对象。

  • 如果这些(所有三个对象)都是从基类继承的,那么只需传递一个包含所有这些存储在列表中的基类列表