我会继续使用单。但是一个封装了接口的单例,也使它成为可测试的。
public class Configuration
{
private IConfiguration _config;
public static IConfiguration Instance { get { return _config; }}
public static void Assign(IConfiguration config)
{
_config = config;
}
}
只需在global.asax或任何单元测试中使用Assign
即可。
如果您想以正确的方式执行此操作,则应直接在对象的构造函数中提供配置设置。
而不是
public class MyService
{
public MyService()
{
var confString = Configuration.Instance.GetConnectionString()
}
}
你会做:
public class MyService
{
public MyService(string confString)
{}
}
最后,我也不会在HTML佣工任何配置的依赖。通过这样做你是添加业务逻辑到您的意见中断separation of concerns