动态运行时依赖项注入

本文关键字:注入 依赖 运行时 动态 | 更新日期: 2023-09-27 17:58:51

这是我的情况:

我有一个基于模板(使用T4)生成内容的应用程序,并且我有多个从ITemplate接口继承的模板类。

我想在Main中做的是在Generator类中定期注入一些ITemplate实现,从配置文件中读取要使用的实现。然后在Main中,我应该调用Generator,它将了解要使用什么模板,并调用适当的TransformText()。

我正在使用Ninject。

这是我第一次在静态类型语言中使用依赖注入,所以我不确定如何继续。。。

问候,

Hugo

动态运行时依赖项注入

如果你真的想在这里使用DI,这是一个简单的例子,但如果你正在搜索类似插件系统的东西,你可能想看看mef。

假设您有一个生成器

public class Generator
{
   private ITemplate _template;
   public Generator(ITemplate t)
   {
      _template = t;
   }
   public void Generate()
   {
       _template.Generate();
   }
}

设置模块。

public class MyNinjectModules : NinjectModule
    {
        public override void Load()
        {
            Bind<ITemplate>().To< TemplateImplementation>();
            Bind<Generator>().ToSelf();
    }
}

然后准备你的Ninject内核,并使用它。

public class Program
{
   public static void Main(
   {
      var kernel = new StandardKernel(MyNinjectModules);
      var myGenerator =    kernel.Get<Generator>();
   }

}