2

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

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

但有些没有

<interceptor type="InterfaceInterceptor"/>

但是在项目中,这些类和接口以相同的方式工作,就像这样

private readonly IIncomingEstimateService _incomingEstimateService;

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

1 回答 1

5

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

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

这两篇文章介绍了使用 Unity 进行拦截的工作原理。

Unity 中的拦截器

在 Unity 中使用拦截

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

网上有很多文章。

控制容器的反转和依赖注入模式

依赖注入模式——它是什么,我为什么要关心?

拦截和注入是完全不同的东西。但是一些依赖注入容器(比如 Unity)允许你同时做这两个。您可以将依赖项注入到类中,并使用容器基础设施拦截对这些类的调用。

于 2012-07-18T06:16:26.013 回答