【发布时间】:2017-01-20 20:38:58
【问题描述】:
我想知道是否有一种方法可以在不使用依赖注入的情况下访问配置 (Microsoft.Extensions.Configuration)。我看到的唯一示例是通过构造函数注入(使用 IOptions 或直接注入 Configuration)。
我的困境是我有一个实用程序类——而不是一个服务——它有静态方法来动态地做事。在其中一些静态方法中,我想从 appsettings.json 动态检索几个属性。由于这严格来说是一个实用程序类,我不想将这个类注入到需要使用实用程序中的一两个方法的每个其他类中。
关于如何在没有某种依赖注入的情况下访问 appsettings.json 属性的任何想法。
仅供参考:使用 c# 和 .net core 1.1
【问题讨论】:
-
@DanielGatti 答案使用注入。不是我要找的。再次是我的实用程序类。它不是服务,没有接口,不应该被注入。你要做的就是使用它:UtilityClass.DoSomething();
-
方法需要是静态的吗?每个需要使用 Utility 的类是否可以只拥有一个 Utility 类型的私有成员,该成员在构造类对象时设置/创建?
-
@BackDoorNoBaby 那么您是否建议注入该实用程序?不过,要回答您的问题,第 1 次不(尽管首选)取决于第 2 次。
-
我之前没有去寻找这个特定的配置文件,如果我误解了上下文,请原谅我。我假设问题是您想要存储对检索到的配置的引用,而不是每次都通过 ConfigurationBuilder 运行它?你可以将你的静态工具换成单例模式,这样你就可以做到这一点(注意线程安全)。也就是说,对我来说,我想我会尝试以某种方式注入它以消除依赖关系。