2012-07-18 83 views
2

接口拦截和构造函数有什么区别注入 asp.net 统一? 我缺乏与统一 我的老项目和unity.config工作,了解DI的一些类似这样的,Microsoft Unity接口拦截和构造函数的区别注入

<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

拦截和注射是两回事。

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

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

Interceptors in Unity

Using Interception with Unity

构造方法注入是实现依赖注入模式的一种方式。这是一种模式,可以告诉您如何构建应用程序以分离组件。

网上有很多文章。

Inversion of Control Containers and the Dependency Injection pattern

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

拦截和注射是完全不同的东西。但是一些依赖注入容器(如Unity)允许您同时执行这两个操作。您可以将依赖关系注入到类中,并使用容器基础结构拦截对这些类的调用。

+0

谢谢,这很有帮助。 – Bubble 2012-07-19 03:22:28