我目前使用
NInject将接口绑定到具体类型并将它们注入到我的类中.但是,我的理解是这是一个运行时间.对我来说,如果有人想改变我的应用程序的行为,它似乎是一个攻击点.
是否有任何东西可以让我将依赖注入IoC迁移到编译时间(阅读:构建后的IL编织/替换)?
详细说明
在我的代码中,我设置了一个绑定
Bind<IFoo>().To<Foo>() Bind<Bar>().ToSelf().InSingletonScope();
与ctor Foo(酒吧依赖)
在我的应用程序的根源(启动时)我解析图表
var foo = kernel.Get<IFoo>();
假设我没有服务定位器(anti-pattern anyway right?).所以我不再使用内核了.
现在我想要一个“post-build release-compile”,用instanciators替换内核的解析引擎,或者引用constant / singleton等.这样我的代码就像这样;
var foo = kernel.Get<IFoo>();
实际上,在我的最终构建阶段更换IL之后,它看起来像这样:
var bar = new Bar(); var foo = new Foo(bar);
并且不再提及NInject了.
我对这个问题的理性是,我正在使用Fody来IL编织我所有的PropertyChanged提升器,我想知道是否可以为依赖注入执行类似的操作.
解决方法
正如所讨论的那样,你所引用的理由并没有加起来.然而,Philip Laureano(Linfu作者)在一段时间内做了
Hiro project,这是预部署DI.不知道它是否去过任何地方……