在不同名称空间中调用同一对象的模式

时间:2019-06-03 17:56:55

标签: c# asp.net interface webforms

我正在用c#创建一个Web窗体项目。

其中一项关键要求是发布到一个API,但是没有一个可用,而是几个API可用。

目前HttpClient对象是在不同名称空间中为每个API唯一定义的,如下所示:

MyCo.Myapp.PostApi.Client1.ClientObject
MyCo.Myapp.PostApi.Client2.ClientObject

除了HttpClient之外,还存储了端点url和媒体类型以及其他一些配置对象。

想法是名称空间Client1Client2存储在数据库中,可用于检索正确的API的位置,以创建对象。

以上都不是一成不变的-它以概念形式出现-所以我想知道是否可以考虑该解决方案的其他替代方案。

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

这似乎是Abstract Factory方法的潜在候选人。您所描述的内容听起来很熟悉如何使用System.Data.Common

连接到各种数据库类型
var settings = GetInfoFromDatabase();
var factory = ClientObjectFactory.Create(settings);

var clientObject = factory.CreateClientObject();
clientObject.Post("");  // This could be any of the client objects.  

但是,由于您无法控制客户端API,因此可以让基础工厂执行该帖子:

factory.Post(clientObject, data);