【发布时间】:2013-07-17 13:57:50
【问题描述】:
我想在父方法中访问外部类(web服务)的方法(web服务在子类中实例化)
场景是这样的: 我有一个名为 ConvertCurrency 的母班,它接受美元并提供卢比。 例如。 int ConvertCurrency(int 美元);
现在市场上有一个标准供应商,它提供了一种任何人都可以在其服务器上托管并创建 Web 服务的软件。因此,假设它托管在两个地方:www.link-A.com/service.asmx 和 www.link-B.com/service.asmx。
我有一个父类:CurrencyConvertor,它有两个子类: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 指令或程序集引用?)
我想知道有什么办法可以解决这个问题。当然,不必求助于为两个提供者中的每一个创建单独的转换函数。
如果我能以某种方式让“服务”对象知道它的接口(即函数签名),它就会正常工作。
有没有办法解决这个问题?
【问题讨论】:
-
转换器 a 和 b 是否继承自 CurrencyConverter?
-
是的@Stephan。感谢您指出这一点 :) 已更新代码以反映相同。
标签: c# web-services oop design-patterns interface