.net core 模型类的.NET核心依赖项注入

.net core 模型类的.NET核心依赖项注入,.net-core,dependency-injection,automapper,startup,concreteclass,.net Core,Dependency Injection,Automapper,Startup,Concreteclass,我有一个单一的解决方案,它包含一个.NET核心Windows服务项目。而且,我正在使用一个.NET标准定制NuGet包。我的代码结构如下: 公共类MyCustomPackage { 私有只读独立服务; 私有只读模型值; 公共MyCustomPackage(IDependentService服务,ModelValue ModelValue) { } } 在上面的代码中,ModelValues类是一个只包含属性的具体类 在windows服务项目中,我正在阅读应用程序设置部分,并将值存储到一个模型类

我有一个单一的解决方案,它包含一个.NET核心Windows服务项目。而且,我正在使用一个.NET标准定制NuGet包。我的代码结构如下:

公共类MyCustomPackage
{
私有只读独立服务;
私有只读模型值;
公共MyCustomPackage(IDependentService服务,ModelValue ModelValue)
{
}
}
在上面的代码中,
ModelValues
类是一个只包含属性的具体类

在windows服务项目中,我正在阅读应用程序设置部分,并将值存储到一个模型类中,例如
configuationmodelvalues

我使用AutoMapper编写了一个映射,将
ConfigurationModelValues
转换为
ModelValues
。但是我不确定如何在startup类中注入
ModelValues
实例

以前,我在构造函数中使用了
IOptions
,这样就可以使用
services.Configure(configuration.GetSection(“sectionName”))直接从配置部分注入它。这很好,但我觉得它与应用程序设置文件紧密结合。为了避免我尝试不同的方法。

您可以这样做:

public void配置服务(IServiceCollection服务)
{
ConfiguartionModelValues=ReadConfigurationValues();
AddSingleton(新模型值(a:values.a,b:values.b,c:values.c));
}
注:

  • 此代码示例创建一个
    ModelValues
    对象,并将其注册为容器中的singleton。这可以确保在应用程序期间重用具有相同配置值的相同实例
  • 对于一个在启动时只创建一次的简单配置对象,使用AutoMapper来构造它似乎没有什么用处(IMO)。通常,手工进行映射比较简单
  • 通过将
    ModelValues
    作为单例添加到容器中,它将能够将其注入
    MyCustomPackage