gpt4 book ai didi

c# - 更改构造函数行为的最不坏方法

转载 作者:太空狗 更新时间:2023-10-29 23:40:15 25 4
gpt4 key购买 nike

我觉得我被困在几个糟糕的解决方案之间,需要一些关于如何最大程度地减少 future 痛苦的建议。我们正在使用 Massive ORM,它在其构造函数中具有以下几行:

var _providerName = "System.Data.SqlClient";

if (ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName != null)
_providerName = ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName;

_factory = DbProviderFactories.GetFactory(_providerName);
ConnectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;

这里对我来说重要的部分是它从 ConfigurationManager 读取连接字符串。我们正在尝试集中配置,在这样做的过程中,我们希望将连接字符串保留在我们的 web/app.configs 之外(我们有大约 150 个已部署的主机,因此开销变得很大)。但是,由于读取的配置文件在这里被硬编码,并且 ConnectionStrings 集合是只读的(有变通方法,但它们都很脏),所以这会失败。

解决此问题的一种可能方法是将这些行提取到虚方法中,然后通过继承对其进行更改。但是,当我们想要更新 Massive 时,这并不是很好,而且从构造函数调用虚方法也可能很糟糕。

我还有哪些其他选择?这里的主要优先事项是尽量减少更新时的影响。

最佳答案

您可以通过构造函数传入所有必填字段来消除对象的配置源依赖性。

参见 Martin Fowler's article关于依赖注入(inject)。同样的概念也适用于此。

关于c# - 更改构造函数行为的最不坏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915688/

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