親メソッドで外部クラス(Webサービス)のメソッドにアクセスしたい(Webサービスは子クラスでインスタンス化されている)
シナリオは次のとおりです。私は ConvertCurrency と呼ばれるマザー クラスを持っています。これはドルを受け取り、ルピーを提供します。例えば。int ConvertCurrency(int ドル);
現在、誰でも自分のサーバーでホストして Web サービスを作成できるソフトウェアを提供する標準的なベンダーが市場に出回っています。たとえば、www.link-A.com/service.asmx と www.link-B.com/service.asmx の 2 つの場所でホストされているとします。
親クラス: CurrencyConvertor があり、2 つのサブクラス: Convertor-A と Convertor-B があります。
Class CurrencyConvertor
{
protected Object Service;
public Convert(int dollars)
{
Service.ConvertCurrency(dollars);
}
}
Class Convertor-A : CurrencyConvertor
{
public Convertor-A()
{
Service = link-A.service;
}
}
Class Convertor-B : CurrencyConvertor
{
public Convertor-B()
{
Service = link-B.service;
}
}
// based on current response-time of the two servers, we decide
// that B is faster and hence we make the decision at run-time that we should use
// B's service
CurrencyConvertor cc = new Convertor-B();
cc.Convert(5);
しかし、親クラスは Service が持つすべてのメソッドを認識しておらず、次のエラーが発生するため、これはコンパイルされません。
'object' には 'GetSources' の定義が含まれておらず、タイプ 'object' の最初の引数を受け入れる拡張メソッド 'GetSources' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
この問題の可能な解決策は何でしょうか。もちろん、2 つのプロバイダーごとに個別の Convert 関数を作成する必要はありません。
何らかの形で「サービス」オブジェクトをそのインターフェイス (つまり、関数シグネチャ) に認識させることができれば、問題なく動作します。
この問題を回避する方法はありますか?