Bla*_*man 5 structuremap asp.net dependency-injection ninject
在高层次上,这些如何解决.注射框架有效吗?
我能理解你是否总是通过自定义工厂实例化对象,如:
IUser user = DepInjector.Get<User>();
Run Code Online (Sandbox Code Playgroud)
我猜测发生了什么,无论你在哪里定义映射,它都会查看你想要的类型并尝试找到匹配项,如果找到,它将通过反射实例化类型.
是否有dep.注射.框架可以像:
IUser user = new User();
Run Code Online (Sandbox Code Playgroud)
如果是这样,它将如何获得正确的用户,它在哪里挂钩到CLR来执行此操作?如果是asp.net网站,它有什么不同吗?
如果你想知道Ninject是如何工作的,那么明显的起点就是阅读他们的官方wiki上的How Injection如何工作.它确实使用反射,但它现在也使用动态方法:
"默认情况下,StandardKernel将创建动态方法(通过 System.Reflection.Emit.DynamicMethod),可用于将值注入不同的注入目标.然后通过委托调用触发这些动态方法."
至于你的第二个例子,我不相信有任何DI框架可以做你所要求的.但是,构造函数注入往往是实现IoC的最常用方法,因此在构造类时,它通过某些配置绑定知道要绑定到哪种类型.因此,在您的示例中,IUser将映射到User配置绑定中的具体,以便任何具有IUser参数作为其构造函数的一部分的消费类将获得User传入的正确类型.
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |