2011-10-25 17 views
7

Tengo un proyecto de servicio web con varios servicios web. Dos de estos servicios web comparten una enumeración que se define en una clase BL, así:Compartir una enumeración entre los servicios web de ASMX

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

Esto es sólo un ejemplo.

Ambos servicios web, cuando se hace referencia en un proyecto web, generar un EmployeeType diferentes proxies de enumeración, por lo que necesito para convertir explícitamente para invocar el método ProcessPayment en 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); 
} 

entiendo .NET tiene que hacer esto para crear el WSDL, pero ¿no puedo de alguna manera hacer que ambos servicios se refieran a la misma enumeración en las clases proxy sin romper nada?

+0

¿Estás usando WCF o ASP.NET? –

+0

Estoy usando ASP.NET. – Meryovi

Respuesta

0

Si expone la misma enumeración, los proxies no tendrán ningún problema:

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); 
} 
+0

Expongo la misma enumeración, definida en una biblioteca común. – Meryovi

Cuestiones relacionadas