我正在用c#创建一个Web窗体项目。
其中一项关键要求是发布到一个API,但是没有一个可用,而是几个API可用。
目前HttpClient
对象是在不同名称空间中为每个API唯一定义的,如下所示:
MyCo.Myapp.PostApi.Client1.ClientObject
MyCo.Myapp.PostApi.Client2.ClientObject
除了HttpClient
之外,还存储了端点url和媒体类型以及其他一些配置对象。
想法是名称空间Client1
或Client2
存储在数据库中,可用于检索正确的API的位置,以创建对象。
以上都不是一成不变的-它以概念形式出现-所以我想知道是否可以考虑该解决方案的其他替代方案。
任何建议表示赞赏。
答案 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);