我写了一个C#应用程序,想要模拟配置值。 例如,我在远程计算机上配置文件创建路径,并希望在测试时在本地创建它。
我想为为实现和接口的配置创建一个包装类,使用这种方法可以模拟接口并返回模拟值。
public interface IConfigurationProvider
{
string GetFileOutputPath(string path);
}
public class ConfigurationWrapper : IConfigurationProvider
{
return ConfigurationManager.AppSettings.Get("FileOutputPath");
}
配置:
<configuration>
<appSettings>
<add key="FileOutputPath" value="RemoteServerPath" />
</appSettings>
</configuration>
这种方法确实可以完成这项工作,但对于这种情况,这是最佳做法吗?
答案 0 :(得分:1)
就最佳做法而言,这将是一个意见问题。在清洁,可测试,可维护的代码方面,通常使用该方法。
以下是您的方法的变体。 (基本上提供相同的功能)
using System.Configuration;
public interface IApplicationSettings {
string this[string setting] { get; }
}
public class ConfigAppSettings : IApplicationSettings {
public string this[string setting] {
get { return ConfigurationManager.AppSettings[setting]; }
}
}
public interface IConnectionStrings {
string this[string name] { get; }
}
public class ConfigConnectionStrings : IConnectionStrings {
public string this[string name] {
get { return ConfigurationManager.ConnectionStrings[name].ConnectionString; }
}
}