我正在思考一个C#库的设计,它将有几个不同的高级函数.当然,这些高级功能将尽可能使用SOLID类设计原则来实现.因此,可能存在供消费者定期直接使用的类,以及作为那些更常见的"最终用户"类的依赖性的"支持类".
问题是,设计库的最佳方法是:
我目前的想法是为常见的DI库提供一些"DI注册模块"(例如,一个StructureMap注册表,一个Ninject模块),以及一个非DI的集合或工厂类,并包含与这几个工厂的耦合.
思考?
我正在开发一个类库,它将在许多不同的Web应用程序中使用,甚至可能作为开源项目提供.有几点我想使用IoC,但我不希望类库的使用者必须使用一个特定的实现.设计这个库的最佳方法是什么,以便它具有IoC的优点,但不依赖于一个IoC框架?
具体来说,此库包含依赖于各种服务接口的ASP.NET MVC控制器.我知道我可以创建一个IoCControllerFactory,但我不确定这是否是最好的方法,因为一些用户可能无法或不想在他们的应用程序中使用它只是为了获得我的库提供的功能.
我正在尝试决定是否有必要通过额外的努力来封装我的IoC容器.经验告诉我,我应该在我的应用程序和任何第三方组件之间放置一层封装.我只是不知道这是否接近矫枉过正.
我可以想到我可能想要切换容器的情况.例如,我目前的容器不再维护,或者证明不同的容器更轻,性能更好,更符合我的需要.如果发生这种情况,那么我可能需要进行大量的重新布线.
为了清楚起见,我正在考虑封装类型的注册和解决方案.我认为封装解决方案是明智的 - 我希望通常的做法是将helper/util类委托给容器.
编辑:
假设我更喜欢以编程方式为类型安全,编译时检查和可重构性连接我的类型.这是该代码和它的,我正在寻找保护自己从容器上的依赖.
我也一直在为其他几个共享很多相同关系的项目使用IoC容器,但容器很难处理,所以我想要改变.但是,更改意味着我失去了注册码的可重用性.因此,为什么我正在考虑封装.这不是一个巨大的负担,但我会喜欢减轻负担.
我期待:
我意识到这有点主观,所以优点/缺点可能会有所帮助
谢谢!