- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Unity 似乎提供了两种不同的途径来实现 AoP 功能。
问题是为什么?有什么区别?每种方法的优缺点是什么?
例如使用 ICallHandler:
unity.Configure<Interception>()
.AddMatchingRule(
new TypeMatchingRule(typeof (ComplexEntity))
).AddMatchingRule(
new TypeMatchingRule(typeof (ComplexEntity.InnerEntity))
).AddMatchingRule(
new MemberNameMatchingRule("*")
).AddCallHandler(
new CallHandler()
);
但是使用 IInterceptionBehavior 代替 ICallHandler 也可以实现类似的功能
unity.RegisterType<ComplexEntity,ComplexEntity>
(new VirtualMethodInterceptor(), new InterceptionBehavior)
还有一个混合的地方可以让你设置拦截但使用调用处理程序,例如。
unity.Configure<Interception>()
.SetInterceptorFor<ComplexEntity>(new VirtualMethodInterceptor())
.AddPolicy("TestPolicy")
.AddMatchingRule(
new TypeMatchingRule(typeof (ComplexEntity))
).AddMatchingRule(
new TypeMatchingRule(typeof (ComplexEntity.InnerEntity))
).AddMatchingRule(
new MemberNameMatchingRule("*")
).AddCallHandler(
new CallHandler()
);
那么使用哪一个呢?为什么在一个框架中会有看似冗余的解决方案?
最佳答案
答案主要是历史性的。在 Unity 存在之前,策略注入(inject)的内容首先出现在 Enterprise Library 3.0 中。需要所有匹配规则的东西,因为没有容器或中心点来连接东西。
当我们开始将拦截集成到 Unity 中时,这给了我们简化事情的机会;策略注入(inject) block 的经验表明,对于很多人来说,PIAB 的经验是多余的。
但是,我们不想任意破坏使用 PIAB 的每个人(我们已经做过几次)所以我们保留了新的、更简单的界面并同时实现了旧界面。
关于c# - Unity ICallHandler 与 IInterceptionBehavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242613/
我正在尝试测试 IInterceptionBehavior 的实现: public class LoggingInterceptorBehavior : IInterceptionBehavior {
我有一个类似打击的 IInterceptionBehavior: public class TraceBehavior : IInterceptionBehavior { public IEn
Unity 似乎提供了两种不同的途径来实现 AoP 功能。 问题是为什么?有什么区别?每种方法的优缺点是什么? 例如使用 ICallHandler: unity.Configure() .AddMat
我是一名优秀的程序员,十分优秀!