gpt4 book ai didi

c# - 两个功能几乎相同的不同库的"using"

转载 作者:太空狗 更新时间:2023-10-29 19:44:10 31 4
gpt4 key购买 nike

我正在使用 SOAP 网络服务。 Web 服务为其每个客户指定一个单独的服务 URL。我不知道他们为什么这样做。它们的所有功能和参数在技术上都是相同的。但是,如果我想为服务编写程序,我必须了解每个公司的意图。这意味着对于一家名为“apple”的公司,我必须使用以下 using 语句:

using DMDelivery.apple;

还有一个叫做“橙色”

using DMDelivery.orange;

但我希望我的程序适用于所有这些,并将公司名称或服务引用点作为参数。

更新:如果我必须为每个客户编写一个单独的应用程序,那么我将不得不让所有的应用程序彼此更新每个小的更改,这将是一项低效的工作随着客户数量的增加。

谁能想出解决办法?我将不胜感激。

最佳答案

如果您有所有服务的基础契约(Contract)(接口(interface)),您可以使用一种 factory实例化您的具体服务,并且仅在您的客户端代码(调用代码)中引用您的接口(interface)。

//service interface
public interface IFruitService{
void SomeOperation();
}

//apple service
public class AppleService : IFruitService{
public void SomeOperation(){
//implementation
}
}

例如有一种工厂类(你可以把你的using语句放在这里)

public static class ServiceFactory{
public static IFruitService CreateService(string kind){
if(kind == "apple")
return new AppleService();
else if(kind == "orange")
return new OrangeService();
else
return null;
}
}

并且在您的调用代码中(您只需为包含您的接口(interface)的命名空间添加一个 using 语句):

string fruitKind = //get it from configuration
IFruitService service = ServiceFactory.CreateService( fruitKind );
service.SomeOperation();

您还可以使用 Dependency Injection原则。

关于c# - 两个功能几乎相同的不同库的"using",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16393864/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com