gpt4 book ai didi

asp.net - ninject 在高层次上是如何工作的,它是如何拦截对象实例化的?

转载 作者:行者123 更新时间:2023-12-04 17:27:29 24 4
gpt4 key购买 nike

在高层次上,这些 dep 是如何实现的。注入(inject)框架有效吗?

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

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

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

有没有印记。像这样工作的框架:
IUser user = new User();

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

最佳答案

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

"By default, the StandardKernel will create dynamic methods (via System.Reflection.Emit.DynamicMethod) that can be used to inject values into the different injection targets. These dynamic methods are then triggered via delegate calls."



至于你的第二个例子,我不相信有任何 DI 框架可以满足你的要求。然而,构造函数注入(inject)往往是实现 IoC 的最常见方式,因此当一个类被构造时,它知道通过一些配置绑定(bind)来绑定(bind)什么类型。所以在你的例子中 IUser将映射到具体 User在配置绑定(bind)中,以便任何具有 IUser 的消费类作为其构造函数的一部分的参数将得到正确的 User传入的类型。

关于asp.net - ninject 在高层次上是如何工作的,它是如何拦截对象实例化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6178970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com