Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# app.config实现的分离_C#_.net_Dependency Injection_Inversion Of Control - Fatal编程技术网

C# app.config实现的分离

C# app.config实现的分离,c#,.net,dependency-injection,inversion-of-control,C#,.net,Dependency Injection,Inversion Of Control,我对以下场景感兴趣。存在包含名为IRepository的通用存储库接口的类库。该库还包含同一接口的多个实现,例如UserRepository、ItemRepository等。此外,我无法添加外部库,如Unity或其他DI容器。我的问题是: 有没有一种方法可以通过 配置文件(例如,用于存储库工厂) 是否可以创建一个配置文件来保存实现接口的类的路径 如果存在这种可能性,是否也可以创建使用该信息的类(例如,使用特定实现生成存储库的工厂) 最好的方法是使用Unity容器。它允许在配置文件中执行类似操作:

我对以下场景感兴趣。存在包含名为IRepository的通用存储库接口的类库。该库还包含同一接口的多个实现,例如UserRepository、ItemRepository等。此外,我无法添加外部库,如Unity或其他DI容器。我的问题是:

  • 有没有一种方法可以通过 配置文件(例如,用于存储库工厂)
  • 是否可以创建一个配置文件来保存实现接口的类的路径
  • 如果存在这种可能性,是否也可以创建使用该信息的类(例如,使用特定实现生成存储库的工厂)

  • 最好的方法是使用Unity容器。它允许在配置文件中执行类似操作:

    <container>
      <register type="ILogger" mapTo="EventLogLogger" /> 
    </container>
    
    
    

    或者,您也可以通过阅读配置部分并在应用程序启动时使用反射创建实例来执行相同的操作

    一些IOC容器通过xml提供配置。这就是你要找的吗?很抱歉我不清楚。我将编辑此问题以提供更多上下文如果不允许外部依赖(安装unity等),该怎么办?任何想法都是非常可取的。我认为在这种情况下,唯一的方法是自己实现容器:创建带有接口实现映射的配置部分,在应用程序启动时阅读此内容,并使用反射创建实例。你的情况可能吗?