简单注入器,希望根据运行时值有条件地注入



假设我有以下类定义:

public class CreateThingyController : ICreateThingyController
{
    private readonly ICreateThingyHandler handler;
    private ISomeBusinessRuleBehaviourDependingOnFlag rule;
    public CreateThingyController(ICreateThingyHandler handler)
    {
        handler = handler;
    }
    public void CreateThingy(string something, bool flag)
    {
         if(flag) rule = new BlaImplementation()
         else rule = new BoehImplementation 
    }
}

我真的很不喜欢像这样设置运行时的行为,所以我想利用 SimpleInjector 来实现这一点。但是由于我只知道在运行时选择什么,根据某些变量,我不知道如何处理。.

任何帮助将不胜感激!

编辑:哦,哇,我现在才开始使用 DI 容器的好处。很棒的东西。

您可能想在此处查看工厂模式。

public class BusinessRuleBehaviourFactory : ISomefactory
{
    public ISomeBusinessRuleBehaviourDependingOnFlag Create(string flag)
    {
        if (flag == "something")
            return new BlaImplementation();
        else if (flag == "something else")
            return new BoehImplementation();
        return new DefaultImplementation();
    }
}

然后你只需将你的工厂注入到你的类中

public CreateThingyController(ICreateThingyHandler handler, ISomeFactory someFactory)
{
    handler = handler;
    factory = someFactory;
}

最新更新