WCF Mehrere Verträge mit doppelten Methodennamen

Ich habe einen Dienst mit mehreren Verträgen so gerne.

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

Ich dann explizit implementiert, die jeweils eine der Schnittstellen so gerne.

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

Wie Sie sehen können, habe ich zwei GetProjects(int) - Methoden, aber jeder ist explizit umgesetzt werden, damit diese kompiliert einwandfrei und ist vollkommen gültig. Das problem entsteht, wenn ich wirklich beginnen, dieses als Dienstleistung an. Es gibt mir eine Fehlermeldung bleiben, dass TrackingTool enthält bereits eine definition GetProject. Während es wahr ist, ist es ein Teil von einem anderen service-Vertrag. Tut WCF nicht unterscheiden zwischen service-Verträge, die beim generieren der Methode Namen ?
Gibt es einen Weg, um es zu unterscheiden zwischen dem service-Verträge ?

Meine App.Config sieht wie folgt aus

<service name="TrackingTool">
  <endpoint address="BusinessUnit" contract="IBusinessUnitDAO" />
  <endpoint address="BusinessFunction" contract="IBusinessFunctionDAO" />
</service>

Jede mögliche Hilfe würde geschätzt.

Dank, Raul

wie @monO erwähnt in seiner Antwort - die tatsächliche individuelle Methode müssen eindeutige Namen in Ihrem service-Klasse. Die WSDL-weiß nichts über Ihre Schnittstellen und alle, und es nicht zulässt, dass die Methode überladen mit verschiedenen Parametern, die Sie benötigen, um diese Methode für eindeutige Namen über die gesamte service-Klasse!
Ah, ich denke, ich muss Lesen Sie, wie die WSDL-tatsächlich erstellt wird. Ich dachte, dass jeder Vertrag hat seinen eigenen Namensraum innerhalb der WSDL.
...eigentlich finde ich das ziemlich verwirrend, auch. @marc_s: die WSDL-weiß über die verschiedenen Schnittstellen. Sie ausgesetzt sind, als dedizierte ports mit speziellen Bindungen.
Überprüfen Sie meine Antwort, die ich nur beantwortet, warum dies geschieht, obwohl die Schnittstellen ausgesetzt sind als dedizierte ports.

InformationsquelleAutor HaxElit | 2010-03-09

Schreibe einen Kommentar