C# 将ConfigurationManager.AppSettings注入类的好方法

C# 将ConfigurationManager.AppSettings注入类的好方法,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,我正试图通过Unity注入ConfigurationManager.AppSettings,以便在测试时能够注入一个特殊形式的AppSettings集合 例如,给定一个具有接口IClassName的类ClassName,并且类名实现利用配置参数,即System.Configuration.ConfigurationManager.AppSettings public class ClassName : IClassName { public ClassName(System.Collecti

我正试图通过Unity注入ConfigurationManager.AppSettings,以便在测试时能够注入一个特殊形式的AppSettings集合

例如,给定一个具有接口
IClassName
的类
ClassName
,并且类名实现利用配置参数,即System.Configuration.ConfigurationManager.AppSettings

public class ClassName : IClassName
{
  public ClassName(System.Collections.Specialized.NameValueCollection AppSettings)
  {
     this._AppSettings = AppSettings;
  }

  public void DoSomething() 
  {
    var urlToCall = _AppSettings["DoSomething.BaseUrl"] + "api/twitter/post";
    //...
  }
}
由于ConfigurationManager.AppSettings不是特定类型,AppSettings实际返回的类型是System.Collections.Specialized.NameValueCollection,它可能过于通用,无法直接连接到返回的ConfigurationManager.AppSettings,注册该类型时,哪种方法比较好,仅当参数名称为“AppSettings”且类型为
System.Collections.Specialized.NameValueCollection

换句话说,,我可以使用RegisterType对参数name
AppSettings
和type
System.Collections.Specialized.NameValueCollection
进行约束来返回ConfigurationManager.AppSettings吗?或者可以使用可配置的工厂路径,但这会导致我执行下面的实现,这是一个需要额外编写大量代码的实现写啊。工厂仍然需要一个静态变量来调整它,在测试中使用(web/app)配置可能很难实现

我不希望这样做:创建一个
IAppSettings
接口,该接口可以提供一个实例,一个实现从ConfigurationManager.AppSettings请求的键返回值,另一个实现仅从内部返回NameValueCollection的值,该实例将在测试期间填充