2013-05-02 2 views
0

, 나는 다음과 같은 인터페이스를 가지고 : 나는 클라이언트 측에서 서비스 참조를 추가 할 때WCF 메서드 매개 변수 순서 내 WCF 웹 서비스에서

[ServiceContract] 
public interface ITestService 
{ 
    [OperationContract] 
    void TestMethod(out int param1, out int param2); 
} 

는, 생성 된 클라이언트 방법은 올바르게 원래의 서명과 일치하지 않습니다 메서드 반환으로 out 매개 변수 중 하나를 매핑합니다.

using (var client = new TestServiceClient()) 
{ 
    int param2; 
    int param1 = client.TestMethod(out param2); 
} 

내가 할 수있는 방법 "힘"원래 메소드 서명에 충실 생성되는 프록시 있습니까 : 나는 이런 식으로 전화를해야?

+0

참조 : http://stackoverflow.com/questions/11294971/how-can-i-prevent-an-out-parameter-to-end-up-return-parameter-in-a-wcf-web- 서비 –

답변

0

기술적으로 충실합니다. Reference.cs 파일을 열면 프록시가 서비스를 호출 할 때 호출이 동일하다는 것을 알 수 있습니다. 그러나 서비스를 호출하는 프록시 또는 "래퍼"는 서비스 호출을 다르게 랩핑하기로 결정했습니다.

프록시 자체를 동일한 서명으로 유지하는 유일한 방법은 직접 작성하는 것입니다. 이것은 DLL을 반영 할 때 사람들이 가지고있는 것과 똑같은 문제입니다. 물론 그것을 반영하고 "소스 코드"를 얻을 수 있지만, 기능은 동일하지만 반영된 코드는 원래 소스와 다를 수 있습니다.

1

나는 이것이 프록시 생성 코드의 한계라고 생각한다. 이를 변경하려면 클라이언트에서 생성 된 프록시 코드를 편집해야합니다.

2

2 개의 속성을 가진 데이터 구조를 반환하도록 서비스를 변경하고 매개 변수를 사용하는 대신 작업에서 반환하는 것을 고려해 보겠습니다.