2011-06-09 86 views
1

这里是我的情况:动态运行时的依赖注入

我有一个基于模板(使用T4)的东西的应用程序,我有多个模板类,从了Itemplate接口继承。

什么,我想在我的主要做的是dinamically注入在我的生成类中的一些的ITemplate实现,用什么实现从被读取,让我们说,配置文件。然后在Main中,我应该调用Generator来理解要使用的模板并调用适当的TransformText()。

我使用Ninject。

这是我第一次使用依赖注入在静态类型语言,所以我不知道如何进行......

问候,

雨果

回答

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>(); 
    } 


}