我正在构建一个由其他应用程序使用的类库。我没有IoC容器,因为我不希望它强加给我的库的消费者。
消费者应该能够在他们的引导程序中配置库,如下例所示:
Example.Configure({ x =>
{
x.AddSomeSetting();
x.AddAnotherSetting();
});
以后对库的任何使用都应使用此中央配置:
// exampleObject should use the central configuration defined above
var exampleObject = new Example.SomeClass();
我使用了一个单例类来存储配置,以后将由库的其余部分访问。
单元测试时出现问题。一旦单元测试方法修改单例配置,所有其他单元测试都会受到此修改的影响。
我可以在每个测试开始时调用的单例上有一个Reset()
方法,但它纯粹用于测试。
有没有比将这个全局状态存储为单例更好的解决方案?
答案 0 :(得分:2)
简单:在其构造函数中为每个库组件提供配置实例。这可能比你想要的更冗长,但它符合你的设计目标,它为图书馆用户提供了完全的自由(甚至可能自己使用依赖注入库)。