【发布时间】:2011-01-24 11:01:53
【问题描述】:
我有一个需要使用策略设计模式的类。在运行时,我需要切换不同的算法来查看对应用程序性能的影响。
当前有问题的类在构造函数中有四个参数,每个参数代表一个算法。
如何使用 Ninject(或通用方法)我仍然可以使用 IOC 但使用策略模式?
当前的限制是我的内核(容器)知道每个算法接口,但只能绑定到一个具体的类。目前我能看到的唯一解决方法是在构建时传入所有八种算法,但使用不同的接口,但这似乎完全没有必要。如果我不使用 IOC 容器,我不会这样做,所以一定有办法解决这个问题。
代码示例:
class MyModule : NinjectModule
{
public override void Load()
{
Bind<Person>().ToSelf();
Bind<IAlgorithm>().To<TestAlgorithm>();
Bind<IAlgorithm>().To<ProductionAlgorithm>();
}
}
Person 需要同时使用这两种算法,这样我才能在运行时切换。但只有 TestAlgorithm 是绑定的,因为它是容器中的第一个。
【问题讨论】:
标签: c# design-patterns ioc-container ninject strategy-pattern