如何将对象列表发送到WCF服务?

时间:2011-11-22 19:28:42

标签: c# wcf asp.net-4.0 wcf-data-services wcf-client

我正在构建WCF服务,我想接受List作为我的方法之一的参数。

这是我的代码:

[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[]

1 个答案:

答案 0 :(得分: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; } 
}