加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – ninject如何在高级别工作,它如何拦截对象实例化?

发布时间:2020-12-16 03:33:42 所属栏目:asp.Net 来源:网络整理
导读:在高层次上,这些如何解决.注射框架有效吗? 我能理解你是否总是通过自定义工厂实例化对象,如: IUser user = DepInjector.GetUser(); 我猜测发生了什么,无论你在哪里定义映射,它都会查看你想要的类型并尝试找到匹配项,如果找到,它将通过反射实例化类型. 是否
在高层次上,这些如何解决.注射框架有效吗?

我能理解你是否总是通过自定义工厂实例化对象,如:

IUser user = DepInjector.Get<User>();

我猜测发生了什么,无论你在哪里定义映射,它都会查看你想要的类型并尝试找到匹配项,如果找到,它将通过反射实例化类型.

是否有dep.注射.框架可以像:

IUser user = new User();

如果是这样,它将如何获得正确的用户,它在哪里挂钩到CLR来执行此操作?如果是asp.net网站,它有什么不同吗?

解决方法

如果你想知道Ninject是如何工作的,那么明显的起点就是在他们的官方维基上阅读 How Injection Works.它确实使用反射,但它现在也使用动态方法:

“By default,the StandardKernel will
create dynamic methods (via
07001)
that can be used to inject values into
the different injection targets. These
dynamic methods are then triggered via
delegate calls.”

至于你的第二个例子,我不相信有任何DI框架可以做你所要求的.但是,构造函数注入往往是实现IoC的最常用方法,因此在构造类时,它通过某些配置绑定知道要绑定到哪种类型.因此,在您的示例中,IUser将映射到配置绑定中的具体User,以便任何具有IUser参数作为其构造函数的一部分的消费类将获得传入的正确User类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读