我的要求与这里提出的问题非常相似 - With.Parameters.ConstructorArgument with ninject 2.0
这可能是一个愚蠢的问题 - 但是,在调用期间向构造函数发送参数的方法是否Get<IMyType>
违反了解耦(我相信这是 DI 的主要动机)本身?
这假定 的用户IMyType
了解 的特定实现的构造函数IMyType
。
由于无法在接口中声明构造函数参数,因此将来可能会添加另一个实现,它在构造函数中采用不同的参数集并绑定到该实现。再一次,按照解耦的理念,代码Bind<IMyType>.To<ADifferentImpl>()
应该能够使用之前编写的任何模块,该模块从Get<IMyType>
.
我有非常相似的要求 - 在绑定时我不知道构造函数参数的值,但仅在访问时才知道。我认为在给定情况下遵循的最佳方法是采用 Adrian Grigore 的回答。请让我知道是否有任何其他方法。