使用依赖注入注入字典

本文关键字:注入 字典 依赖 | 更新日期: 2023-09-27 17:52:55

我为我的项目创建了一个函数(字典):

private static Dictionary<string, Func<IMessageProcessor>> strategyFactories = new Dictionary<string, Func<IMessageProcessor>>()
    {
        { "T.2.12.0", new Func<IMessageProcessor>(() => new HVPVTParser()) },
        { "T.3.03.0", new Func<IMessageProcessor>(() => new PVTParser()) },
        { "Unknown", new Func<IMessageProcessor>(() => new UnknownParser()) }
    };

根据要求,我想摆脱新的操作符类(HVPVTParser, PVTParser和UnknownParser)。我可以通过依赖注入来改进功能吗?在研究过程中,我发现了一个注入我的字典的选项。我听不懂"注入"这个词。谁能提供代码样本来实现我的目标或任何指导方针来解决问题。

使用依赖注入注入字典

通常你"注入"某种实现接口的服务。在您的例子中,它将是这样的:

public interface IStrategyFactoryService
{
    public Dictionary<string, Func<IMessageProcessor>> Factories {get;}
}

你的类将有一个构造函数参数(如果数据是类运行所必需的)或一个属性(如果数据是有用的但不是必需的)。

然后创建实现该接口的类-一个用于"活动"应用程序的真实接口和一个用于测试的假接口。