2010-12-26 2 views
0

Я создаю ссылку на службу для веб-службы, написанной на Java. Сгенерированные классы теперь следуют за соглашением оболочки Java, используемым в веб-службе, например, имена классов - это camelCase, а не PascalCase.Изменение обложки в справочной службе WCF

Есть ли способ получить желаемый корпус из справочной службы?

ПОЯСНЕНИЯ:

услуг на основе WSE, можно изменить сгенерированные Reference.cs обеспечить стандартную оболочку .NET и использовать XmlElementAttribute для сопоставления Java Naming, представленный внешним веб-службы, как это:

[System.Xml.Serialization.XmlElementAttribute("resultType", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] 
[System.Runtime.Serialization.DataMember] 
public virtual MyResultType ResultType 
{ ... } 

Не очень удобен для обслуживания без написания специального кода для генерации прокси-кода или изменения его после его создания.

Что мне нужно - это один или несколько параметров для представления прокси-сервера, созданного WCF, для вызова приложений с использованием соглашений об использовании оболочки .NET, достигая того же, что я делал ранее с WSE. Надеюсь, с меньшим ручным усилием.

+1

А? Если вы сделаете ссылку на обслуживание, у нее есть обложка службы. Всегда. –

+0

Уточнено, что я ищу самый простой путь для представления оболочки .NET для других частей приложения и представил пример того, как я ранее выполнял это с WSE. –

ответ

0

Ну, так как ваш клиент прокси WCF являются частичные классы, вы всегда можете добавить второй файл для того же класса, который реализует PascalCasedMethodName для каждого javaCasedMethodName, а затем просто вызывать метод Java из вашего нового метода.

public partial class MyClientProxy 
{ 
    ...... 
    public MyResultType GetResultType(string inputParam) 
    { 
     return this.getResultType(inputParam); 
    } 
    ...... 
} 

Кажется немного избыточным - но это должно действительно работать, я думаю. Поскольку ваш код хранится в отдельном файле, он не будет перезаписан, если вы заново создадите прокси-сервер клиента, и поскольку это вторая часть частичного класса, он будет «слит в» определение класса для вашего кода клиента звонить.

+0

Проблема заключается в том, что это не только имена методов, но и типы, которые неверно (для .NET). Существует довольно глубокая иерархия классов, участвующих в вводе и выводе, поэтому копирование между сгенерированными классами и классами с дубликатами с правильной оболочкой будет проблематичным. –