WCF Multiple contracts with duplicate method names
Posted
by haxelit
on Stack Overflow
See other posts from Stack Overflow
or by haxelit
Published on 2010-03-09T17:47:06Z
Indexed on
2010/06/17
6:23 UTC
Read the original article
Hit count: 229
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
© Stack Overflow or respective owner