我为此搜索了很多但是我总是得到将参数传递给一个Web服务的结果。我希望将Web服务对象作为参数传递给方法,如果可能的话。我目前的代码如下。
public static string CheckDaysLeft(string serial)
{
amazonaws.WebService1 MyService = new amazonaws.WebService1();
return MyService.GetDaysLeft(serial).ToString();
}
所以我的项目中有两个Web服务引用, localserver 以及上面的 amazonaws 。上面我称之为联系亚马逊网络服务的方法,并获取特定序列号的剩余时间。这工作正常。我希望能够作为参数传递给CheckDaysLeft方法,使用两个Web服务中的哪一个(localserver或amazonaws)。原因是如果一个Web服务关闭,程序将尝试与另一个Web服务通信。我可以创建两次CheckDaysLeft方法并在每种方法中使用每个Web服务引用,但这并不理想。
我该怎么做?
答案 0 :(得分:1)
如果他们没有共同的基类或接口,我可以想到两种方法来实现你想要的东西:
传递object
让您的方法采用object
参数并使用is
运算符来查找您所获得的内容,可能是这样的:
public void CallMethod(object service)
{
if (service is Localservice)
((Localservice)service).CallMethod();
else
((Amazonservice)service).CallMethod();
}
创建代理类
您还可以将每个调用封装在具有两个服务引用的代理类中,并决定使用哪个。然后,您可以依赖代理类来做正确的事情:
public class ProxyClass
{
private Localservice _localService;
private Amazonservice _amazonService;
public ProxyClass(Localservice instance1, Amazonservice instance2)
{
_localService = instance1;
_amazonService = instance2;
}
public void CallMethod()
{
if (shouldUseLocalService)
_localService.CallMethod();
else
_amazonService.CallMethod();
}
}
然后你可以像这样制作你的实际方法:
public void CallMethod(ProxyClass proxy)
{
proxy.CallMethod();
}
答案 1 :(得分:0)
如果你的两个服务器都使用相同的方法(Object.GetDaysLeft(serial)),你总是可以创建一个接口,然后你可以在两个类中实现它们,比如说IMyServers。 这样,您可以按照以下方式执行某些操作:
public static string CheckDaysLeft(string serial, IMyServer Server)
{
return Server.GetDaysLeft(serial).ToString();
}