2010-04-20 45 views
1

如何從webmethod返回對象集合?而且可以在這個集合對象是不同類型的 - 說這3個班,返回webmethod中的對象集合

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?

回答

0

將它們作爲數組或列表返回。我沒有在我面前的IDE,但它應該像

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

更好的是,如果他們繼承了相同的基類或接口。

3

由於相同方法的不同可能結果?這將是醜陋的,並且不允許僵硬的模式(認爲:WSDL)存在。也許將所有4個選項封裝在一個單一的類型上,你會返回?或者使用某種繼承和[XmlInclude]。在多個值的情況下,您可以返回List<TheBaseType>

如果你的意思是「我要一重擊方法的所有這些」,那麼只是包裝他們:

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

,並返回(多值或List<MyReturnType>)的MyReturnType一個實例。

+0

但公共類MyReturnType既可以只有一個或更多的類取決於一些內部邏輯。這就是爲什麼我在List <變化的對象>中考慮更多的原因(如果有什麼可能的話)? – 2010-04-20 17:24:18

+0

@Narmatha,這是可能的。如果你的每個類繼承自一個公共基地,你可以返回'List '或'Base []'。如果沒有這個,你必須把它作爲'object'的列表或數組返回。 – 2010-04-20 17:27:44

+0

返回複合MyReturnType將是理想情況下的最佳解決方案。但是這個類的元素只在運行時才知道,並且在運行時聲明一個類很困難(不是不可能的)。所以爲了我的需要,堅持一系列對象是有道理的。 – 2010-04-21 18:39:20

0

您可以執行下列操作之一:

  • 有一個包含所有這些3個對象的自定義對象(而不是作爲一個名單,但作爲單獨的對象),並通過該化合物的對象。

  • 如果這些(三個對象)從基類繼承的則只是通過這個基類的列表,所有這些存儲在列表

相關問題