Совместное использование перечисления между веб-службами ASMX

#c# #asp.net #.net #web-services #webservice-client

#c# #asp.net #.net #веб-службы #веб-сервис-клиент

Вопрос:

У меня есть проект веб-службы с несколькими веб-службами. Две из этих веб-служб совместно используют перечисление, определенное в классе BL, например:

 public class HumanResourcesService
{
    public SomeLibrary.Employee GetEmployee(int employeeCode)
    {
       var employee = new SomeLibrary.Employee();
       employee.Type= SomeLibrary.EmployeeType.SomeType;
       return employee ;
    }
}

public class BankService
{
    public bool ProcessPayment(int employeeCode, EmployeeType employeeType)
    {
        bool processed = false;
        // Boring code
        return processed;
    }
}
 

Это всего лишь пример.

Обе веб-службы, на которые ссылаются в веб-проекте, генерируют разные EmployeeType прокси-серверы enum, поэтому мне нужно явно выполнить приведение для вызова ProcessPayment метода в BankService :

 public void SomeMethod(int employeeCode)
{
     var hrService = new HumanResourcesService();
     var employee = hrService.GetEmployee(employeeCode);

     var bankService = new BankService();
     bankService.ProcessPayment(employee.Code, (MyProject.BankService.EmployeeType) employee.Type);
}
 

Я понимаю, что .NET должен сделать это для создания WSDL, но не могу ли я каким-то образом заставить обе службы ссылаться на одно и то же перечисление в прокси-классах, ничего не нарушая?

Комментарии:

1. Используете ли вы WCF или ASP.NET ?

Ответ №1:

Вы можете использовать параметр sharetypes для wsdl.exe . См. http://msdn.microsoft.com/en-us/library/7h3ystb6.aspx за подробностями.

Ответ №2:

Если вы предоставите одно и то же перечисление, прокси-серверы будут работать нормально:

 public class BankService
{
    public bool ProcessPayment(int employeeCode, MyProject.BankService.EmployeeType employeeType)
    {
        bool processed = false;
        // Boring code
        return processed;
    }
}

public void SomeMethod(int employeeCode)
{
     var hrService = new HumanResourcesService();
     var employee = hrService.GetEmployee(employeeCode);

     var bankService = new BankService();
     bankService.ProcessPayment(employee.Code, employee.Type);
}
 

Комментарии:

1. Я предоставляю одно и то же перечисление, определенное в общей библиотеке.