2013-05-02 3 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 свойствами и вернуть ее из вашей работы, вместо использования параметров.