2011-11-22 6 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 테스트 클라이언트를 사용하고 있습니다. 문제가 될 수 있습니까? 어쩌면 인터페이스가 목록을 지원하지 않을 수 있습니까? –

+0

또 다른 가능한 문제가 있습니다. 즉, 제품이 포함 된 제품이있는 것입니다. 하위 제품 유형의 제품을 사용해 볼 수 있습니다 –

+0

콘솔 응용 프로그램에서 서비스를 호출하면 List를 보낼 수 있습니다. WCF 테스트 클라이언트로만 제대로 작동하지 않습니다. –

관련 문제