2011-10-25 125 views
7

我有一个包含多个Web服务的Web服务项目。这个Web服务两股即在BL类中定义的,像这样的枚举:在ASMX Web服务之间共享一个枚举

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

这仅仅是一个例子。

两个Web服务,在Web项目中引用时,产生不同的EmployeeType枚举代理,所以我需要显式转换来调用BankServiceProcessPayment方法:

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,但是不能以某种方式让这两个服务在代理类上引用相同的枚举而不破坏任何东西?

+0

您使用的是WCF还是ASP.NET? –

+0

我正在使用ASP.NET。 – Meryovi

回答

0

如果公开相同的枚举,该代理将正常工作:

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

我确实公开了在公共库中定义的相同枚举。 – Meryovi