2011-11-22 55 views
3

我正在構建WCF服務,我想接受List作爲我的方法之一的參數。如何發送對象列表到WCF服務?

這裏是我的代碼:

[ServiceContract] 
public interface IProductService 
{ 
    [OperationContract] 
    int InsertProducts(List<Product> products); 
} 

[DataContract] 
[KnownType(typeof(List<Product>))] 
public class Product 
{ 
    [DataMember] 
    public int ProductId{ get; set; } 

    [DataMember] 
    public string ProductName{ get; set; } 

    [DataMember] 
    public List<Product> Products { get; set; } 
} 

當我運行的服務它給了我一個錯誤。

此操作在WCF不支持,因爲它使用NameSpace.Product[]

+0

你不需要[KnownType(typeof運算(名單)) –

回答

5

當通過WCF我們總是創造出有一個屬性是列表中的課堂上發一個通用的列表。

[ServiceContract] 
public interface IProductService 
{ 
    [OperationContract] 
    int InsertProducts(MyListofProducts products); 
} 


[DataContract] 
public class MyListofProducts 
{ 

    [DataMember] 
    List<Product> Products { get; set; } 

} 

[DataContract] 
public class Product 
{ 
    [DataMember] 
    public int ProductId{ get; set; } 

    [DataMember] 
    public string ProductName{ get; set; } 

    [DataMember] 
    public List<Product> Products { get; set; } 
} 
+0

我試過你建議的方式。我也遇到了同樣的錯誤。我正在使用WCF測試客戶端,可以解決這個問題嗎?也許它的界面不支持List? –

+0

還有另一個可能的問題,那就是您擁有包含產品的產品。您可以嘗試使用子產品類型的產品 –

+0

如果我從控制檯應用程序調用服務,我可以發送List。它只適用於WCF測試客戶端 –