动态运行时依赖注入

时间:2011-06-09 14:56:20

标签: c# dynamic dependency-injection ninject t4

这是我的情况:

我有一个基于模板生成内容的应用程序(使用T4),我有多个继承自ITemplate界面的模板类。

我想在我的Main中做的是在我的Generator类中使用dinamically注入一些ITemplate实现,使用从配置文件中读取的实现。然后在Main我应该调用Generator,它将理解要使用的模板并调用正确的TransformText()。

我正在使用Ninject。

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

此致

雨果

1 个答案:

答案 0 :(得分:0)

如果你真的想在这里使用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>();
   }


}