C# 如何在ASP.NET MVC6中将配置传递给非控制器类
我正在使用MVC6开发一个应用程序。我可以读取启动文件中的JSON配置,并将其注入控制器中 现在,我的要求是,我希望访问非控制器类内部的配置。在这种情况下,我不能使用构造函数DI。这些类位于MVC6应用程序的某个文件夹中,但它们不是模型或控制器类 在这种非控制器类中访问配置的最佳方式是什么 多谢各位 更新: 只是澄清一下——我不能在这些类中使用DI 这些类仅在基于某些条件需要时实例化,并对它们调用方法。我需要从这些类/方法中访问JSON配置设置。到目前为止,我只知道这些方法:C# 如何在ASP.NET MVC6中将配置传递给非控制器类,c#,asp.net-mvc,asp.net-core-mvc,C#,Asp.net Mvc,Asp.net Core Mvc,我正在使用MVC6开发一个应用程序。我可以读取启动文件中的JSON配置,并将其注入控制器中 现在,我的要求是,我希望访问非控制器类内部的配置。在这种情况下,我不能使用构造函数DI。这些类位于MVC6应用程序的某个文件夹中,但它们不是模型或控制器类 在这种非控制器类中访问配置的最佳方式是什么 多谢各位 更新: 只是澄清一下——我不能在这些类中使用DI 这些类仅在基于某些条件需要时实例化,并对它们调用方法。我需要从这些类/方法中访问JSON配置设置。到目前为止,我只知道这些方法: 将启动时的配置属性
Startup.Configuration[“…”]
这些替代品好吗(当然不是DI)?还有其他方法吗?您可以将配置注入到所需的任何类中。只需在构造方法上注入配置类
class MyConfig()
{
// your configuration members
}
class MyBLClass(MyConfig config)
{
private MyConfig _config;
public MyBLClass(MyConfig config)
{
_config=config;
}
// use the _config in your class
}
在DI中,只需注册BI类
container.RegisterSelf<MyBLClass>(); // just an example read your DI doc
container.RegisterSelf();//只是一个例子,请阅读您的DI文档
因此,每当您要求DI定位该类时。config对象也自动注入到类中
作为更好的解决方案,您可以使用接口而不是concert类 我要做的是创建一个注册服务方法,如下所示:
public static void AddMyTools(this IServiceCollection services, IConfiguration config){
//Save the config in the class
}
在这个静态方法中,我将在这个静态类中存储我需要的配置
然后在Startup.cs中,我将使用我的工具的名称空间,然后在ConfigureServices部分,我将添加我的工具,如下所示:
services.AddMyTools(Configuration);
希望对你有帮助。我没有尝试过,也许有些改变,但你有全球的想法。(我一直在寻找这个问题,@Sam Farajpour Ghamari用他的答案告诉我答案)这些“非控制器类”是什么类型的类?它们在哪里使用?他们的生命周期是什么?一些包含一些业务逻辑,一些是助手和实用程序。他们需要访问存储在配置文件中的设置。然后将它们连接到DI系统并注入它们?似乎你有一个错误的前提,即不能将DI用于某些类。您可以将它用于任何类型的类,而不仅仅是控制器和模型空间,在这些类中,我使用构造函数方法将设置注入其中,然后抱怨我没有传递设置对象,因此它们需要DI链接到控制器。对吗?