依赖注入(DI)“友好”库
我正在考虑C#库的设计,它将具有几种不同的高级功能。当然,这些高级函数将使用实心类设计原则越多越好。因此,可能会有供消费者定期直接使用的类,以及那些更常见的“最终用户”类的依赖关系的“支持类”。
问题是,设计库的最佳方法是:
- DI不可知论-虽然添加基本的“支持”一两个常用的DI库(结构地图、尼尼微等)似乎是合理的,但我希望消费者能够使用任何DI框架的库。
- 不可用的-如果库的使用者没有使用DI,那么库仍然应该尽可能容易使用,从而减少用户创建所有这些“不重要”的依赖关系所需的工作量,这仅仅是为了获得他们想要使用的“真实”类。
我目前的想法是为常见的DI库提供一些“DI注册模块”(例如,一个StructurereMap注册表,一个Ninject模块),以及一个非DI并包含到这几个工厂的耦合的Set或Factory类。
思想?