Совместно использовать перечисление между веб-службами ASMX - PullRequest
7 голосов
/ 26 октября 2011

У меня есть проект веб-службы с несколькими веб-службами. Два из этих веб-сервисов совместно используют перечисление, определенное в классе 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, поэтому мне нужно явно привести приведение, чтобы вызвать метод 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, но не могу ли я как-то заставить оба сервиса ссылаться на один и тот же enum в прокси-классах, ничего не нарушая?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2011

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

0 голосов
/ 26 октября 2011

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

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);
}
...