WCF Multiple contracts with duplicate method names
- by haxelit
Hello,
I have a service with multiple contracts like so.
[ServiceContract]
public partial interface IBusinessFunctionDAO {
[OperationContract]
BusinessFunction GetBusinessFunction(Int32 businessFunctionRefID);
[OperationContract]
IEnumerable<Project> GetProjects(Int32 businessFunctionRefID);
}
[ServiceContract]
public partial interface IBusinessUnitDAO {
[OperationContract]
BusinessUnit GetBusinessUnit(Int32 businessUnitRefID);
[OperationContract]
IEnumerable<Project> GetProjects(Int32 businessUnitRefID);
}
I then explicitly implemented each one of the interfaces like so.
public class TrackingTool : IBusinessFunctionDAO, IBusinessUnitDAO {
BusinessFunction IBusinessFunctionDAO.GetBusinessFunction(Int32 businessFunctionRefID) {
// implementation
}
IEnumerable<Project> IBusinessFunctionDAO.GetProjects(Int32 businessFunctionRefID) {
// implementation
}
BusinessUnit IBusinessUnitDAO.GetBusinessUnit(Int32 businessUnitRefID) {
// implementation
}
IEnumerable<Project> IBusinessUnitDAO.GetProjects(Int32 businessUnitRefID) {
// implementation
}
}
As you can see I have two GetProjects(int) methods, but each one is implemented explicitly so this compiles just fine and is perfectly valid. The problem arises when I actually start this as a service. It gives me an error staying that TrackingTool already contains a definition GetProject. While it is true, it is part of a different service contract. Does WCF not distinguish between service contracts when generating the method names ?
Is there a way to get it to distinguish between the service contracts ?
My App.Config looks like this
<service name="TrackingTool">
<endpoint address="BusinessUnit" contract="IBusinessUnitDAO" />
<endpoint address="BusinessFunction" contract="IBusinessFunctionDAO" />
</service>
Any help would be appreciated.
Thanks, Raul