gpt4 book ai didi

c# - Microsoft Unity接口(interface)拦截和构造函数注入(inject)的区别

转载 作者:行者123 更新时间:2023-12-02 05:37:03 31 4
gpt4 key购买 nike

asp.net unity中接口(interface)拦截和构造函数注入(inject)有什么区别?我缺乏对 DI with Unity 的理解我正在做一个旧项目,在 unity.config 中,有些像这样,

<register type="ICRIC2012TrialUserService" mapTo="CRIC2012TrialUserService">
<lifetime type="perthread"/>
<interceptor type="InterfaceInterceptor"/>
<policyInjection/>
</register>

但有些没有

<interceptor type="InterfaceInterceptor"/>

但是在项目中这些类和接口(interface)的工作方式是一样的,就像这样

private readonly IIncomingEstimateService _incomingEstimateService;

public ContractService(IIncomingEstimateService incomingEstimateService)
{
_incomingEstimateService = incomingEstimateService;
}

最佳答案

拦截和注入(inject)是两个不同的东西。

拦截通常用于向类添加横切关注点(如日志记录),而无需一遍又一遍地实现它们。 Unity 中的拦截通过生成接收传入方法调用的代理来工作,并通过所谓的拦截器管道引导它们,直到调用最终到达原始目标对象。

这两篇文章介绍了如何使用 Unity 进行拦截。

Interceptors in Unity

Using Interception with Unity

构造函数注入(inject)是实现依赖注入(inject)模式的一种方式。它是一种模式,告诉您如何构建应用程序以解耦组件。

网络上有很多文章。

Inversion of Control Containers and the Dependency Injection pattern

The Dependency Injection Pattern – What is it and why do I care?

拦截和注入(inject)是完全不同的东西。但是某些依赖注入(inject)容器(如 Unity)允许您同时执行这两项操作。您可以使用容器基础设施将依赖项注入(inject)类并拦截对这些类的调用。

关于c# - Microsoft Unity接口(interface)拦截和构造函数注入(inject)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533354/

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