【发布时间】:2013-03-01 04:30:24
【问题描述】:
我的要求与这里提出的问题非常相似
- With.Parameters.ConstructorArgument with ninject 2.0
这可能是一个愚蠢的问题——但是,在调用 Get<IMyType> 期间向构造函数发送参数的方法是否违背了解耦的哲学(我相信这是 DI 的主要动机)本身?
这假设IMyType 的用户知道IMyType 的具体实现的构造函数。
由于无法在接口中声明构造函数参数,因此将来可能会添加另一个实现,它在构造函数中采用不同的参数集并绑定到该实现。同样,按照解耦的理念,执行Bind<IMyType>.To<ADifferentImpl>() 的代码应该能够与之前编写的任何模块一起使用,该模块从Get<IMyType> 获取实现对象。
我有非常相似的要求——在绑定时我不知道构造函数参数的值,而只是在访问时。我认为在给定情况下遵循的最佳方法是采用 Adrian Grigore 的回答。 如果有其他方法,请告诉我。
【问题讨论】:
标签: c# dependency-injection constructor ninject