Ich habe Hierarchie Dienstklassen wie folgt aus:Wie erstelle ich einen Verweis auf die Basis-Service-Methoden?
Basis Service:
[ServiceContract()]
public interface IServiceBase
{
[OperationContract]
void BaseMethod();
}
public class ServiceBase : IServiceBase
{
public void BaseMethod()
{}
}
Dienst A:
[ServiceContract()]
public interface IServiceA : IServiceBase
{}
public class ServiceA : ServiceBase, IServiceA
{}
Dienst B:
[ServiceContract()]
public interface IServiceB : IServiceBase
{}
public class ServiceB : ServiceBase, IServiceB
{}
Auf der Client-Seite I erstellen zwei Proxy-Klassen für ServiceA und ServiceB durch Visual Studio's "A dd Service reference“Tool:
ProxyA proxyServiceA;
ProxyB proxyServiceB;
Diese sind Verweise auf zwei verschiedene Dienste (wenn auch mit einer Basisklasse auf der Serverseite).
Ich möchte Methoden aus dem BaseService über diese Proxies auf identische Weise aufrufen. Zum Beispiel möchte ich diese Proxies als Parameter an eine Methode zu übergeben und seine BaseService Methode aufrufen, wie folgt aus:
// somewhere on the client side
WorkMethod(proxyServiceA);
WorkMethod(proxyServiceB);
// Something like this, BUT I DON'T REALLY KNOW WHAT TYPE OF PARAMETER TO USE
void WorkMethod(ProxyBase proxyBase)
{
proxyBase.BaseMethod();
}
Aber wie es zu tun, welche Art von Parameter verwenden (denken Sie daran, dass diese Proxies verschiedenen Klassen sind ohne BaseService gemeinsamen Vorfahren)?
Mit anderen Worten, auf der Serverseite ist bekannt, dass ServiceA und ServiceB einen gemeinsamen Vorfahren haben und es möglich ist, eine Basismethode aufzurufen, aber wie geht das auf der Client-Seite?
Ist es möglich, eine Klasse auf dem Client zu erhalten, die als Basisklasse für diese beiden Proxies erkannt wird? (außer System.ServiceModel.ClientBase natürlich)
Das Problem ist fast die gleiche wie in [diesem Fall] (http://stackoverflow.com/questions/3422567/wcf-service-vererbung) - Erstellen eines Basis-Proxys, der den Basisdienst implementiert. – Alex34758