2014-12-01 5 views
-1

많은 기능을 가진 WCF 서비스가 있습니다. 그들 중 일부는 List<string> 인수를 포함합니다. 예컨대 WCF string []의 일부 함수가 List로 변환되지 않았습니다. <string>

[ServiceContract] 
public interface IQueriesService 
{ 

    [OperationContract] 
    DataTable ExecuteSimpleQuery(List<string> sel, List<string> fr, List<string> whereCells, List<string> types, List<string> whereOps, List<string> whereValues, List<string> logOp, int cultureLCID); 
} 

public class UniverService : IQueriesService 
{ 

    public DataTable ExecuteSimpleQuery(List<string> sel, List<string> fr, List<string> whereCells, List<string> types, List<string> whereOps, List<string> whereValues, List<string> logOp, int cultureLCID) 
    { 

     DataTable dt = new DataTable(); 
     ... 
     return dt; 
    } 
} 

simpleQ.Select = simpleQ.Select.Distinct().ToList(); 
simpleQ.From = simpleQ.From.Distinct().ToList(); 
DataTable dt = svc.ExecuteSimpleQuery(simpleQ.Select, simpleQ.From, simpleQ.WhereCell, simpleQ.Type, simpleQ.WhereOp, simpleQ.WhereValue, simpleQ.LogicOperation, Thread.CurrentThread.CurrentUICulture.LCID); 

곳 simpleQ.Select, 내가 다른 프로젝트에 내 서비스 참조를 추가 서비스 참조 설정 창에서 내가 System.Array에서 System.Collections.Generic.List에 컬렉션 형식을 변경하면 ... 유형 List<string>

의 수 있습니다에서. 내 문제는 위에서 언급 한 변환이 일부 기능에서 작동하고 다른 기능에서는 그렇지 않다는 것입니다. 서비스 참조를 추가하고 다시 작성하면 오류가 발생합니다. List에서 string []으로 변환 할 수 없습니다. 생성 된 프록시 클래스를 살펴보면, 그 함수가 실제로 문자열 배열 (목록이 아닌)을 인수로 사용한다는 것을 알 수 있습니다. 누가 나를 도울 수 있습니까?

+0

나는 일하는 사람들이'List'의 리턴 타입을 가지고 있다고 생각할 것입니다. 여러분의 질문에 표시 한 것은 리턴 타입이'DataTable'입니다. 메소드를 사용할 때 리턴 타입에 익숙합니다. ..? 또한 코드를 단계별로 실행하면 코드 기능/논리가 무너지는 부분에 대한 답을 얻을 수 있습니다. – MethodMan

+0

흥미로운 고려 사항이지만 내 코드와 을 살펴 봤습니다. 1. void DeleteStudents (List ); this one works 2. void SaveXMLQuery (문자열 제목, 문자열 설명, bool isFavourite, List fr, List 셀)'도 작동하지 않습니다 ... 반환 유형에 대해 알아야 할 것이 있습니까? 내가 그것을 이해할 수 있습니다 ... –

+0

'Artak' 귀하의 원래 질문에있는 모든 코드 업데이 트를 게시 또한 완전한 방법 서명과 코드를 보여줍니다 .. 당신은뿐만 아니라 방법을 보여주는 방법을 보여줄 필요가 또한 어떻게 보여 선언되거나 할당 된'fr'과'sel'은 모든 관련 코드를 표시합니다. – MethodMan

답변

0

문제의 배열 끝에 확장 방법 ToList()을 추가 할 수 있어야하며 정상적으로 작동해야합니다. 리스트의 기능을 필요로하지 않고 인자를 반복 할 필요가 있다면 인자 타입을 IEnumerable<string>으로 바꾸면 배열과리스트가 모두 입력 인자로 사용됩니다.