我有一個WCF服務,它暴露了很多方法。Upcasting ServiceContract
我的應用程序使用此服務,包括的ServiceContract對於只有一些方法OperationContract的定義。
要剪切的問題,考慮下面的代碼示例:
[ServiceContract]
public interface IServer
{
[OperationContract]
void BasicOperation();
}
[ServiceContract]
public interface IExtendedServer : IServer
{
[OperationContract]
void ExtendedOperation();
}
我想訂立合同,使應用程序的擴展能力。換句話說,我希望能夠在任何地方使用IServer合同,但是允許插件式架構擴展基本合同接口,以便插件本身可以調用ExtendedOperation()
運營合同。
那麼,如何構建我的代碼,或者,做什麼樣的變化我必須作出,以便能夠像做以下? (信道類型iServer中的)
((IExtendedServer)channel).ExtendedOperation()
當我試圖做到這一點,我得到錯誤
System.InvalidCastException:無法投透明代理鍵入「Contract.IExtendedServer」。
我希望我沒有混淆...
+1提供具體的選擇與周到的推理。 – David 2010-06-04 19:08:33
謝謝。在我自己的推理中,我有點模糊,有一些想法,但它似乎並不堅持,尤其是經過很好的解釋。 – 2010-06-04 21:37:39