2014-02-06 46 views
0

我试图注入定义为我怎样才能从一个特定的配置文件

public interface IConfigurationReader 
{ 
    string GetConfigSetting(string settingName); 
} 

,并在执行配置阅读器的模拟appSetting值的样子:

private class MyConfig : cherry.Framework.IConfigurationReader 
    { 
     public string GetConfigSetting(string settingName) 
     { 
      return ConfigurationManager.AppSettings[settingName]; 
     } 
    } 

的问题当然这需要我在这个项目中有一个app.config文件。理想的情况是我想要做的事,如:

return Foo("c:\temp\someconfig.config\",settingName); 

是否有将一个文件名,并返回所需的设置一个内置的方法?

+0

如果您使用的是模拟的,那么为什么你需要一个实际的配置文件? – dugas

+0

我很懒,想把读者指向中央配置文件,而不是模拟每个设置。 – WhiskerBiscuit

回答

0

XML到LINQ是我的朋友:

private class MyConfig : cherry.Framework.IConfigurationReader 
    { 
     private String ConfigFile { get; set; } 

     public MyConfig(String configFile) 
     { 
      ConfigFile = configFile; 
     } 
     public string GetConfigSetting(string settingName) 
     { 
      var setting = XDocument.Load(ConfigFile).Descendants("add").Select(s => new 
      { 
       AppKey = s.Attribute("key"), 
       AppValue = s.Attribute("value") 
      }).FirstOrDefault(x => x.AppKey.Value == settingName); 
      if (setting == null) 
      { 
       throw new Exception("key not found!"); 
      } 
      else 
       return setting.AppValue.Value; 
     } 
    } 
相关问题