Unity Creating Interception Handler Attributes

本文介绍了如何在Unity中利用默认注入机制创建并使用CallHandler,通过提供继承于HandlerAttribute抽象类的自定义实现,实现特定的功能,如日志记录等。以一个简单的示例展示了如何注册和使用自定义的ICallHandler。

Unity提供了一种默认注入CallHandler的机制,只需要开发人员提供继承于HandlerAttribute抽象类,并实现CreateHandler函数,它返回一个实现ICallHandler的类型。你可以通过上下文传递的IUnityContainer创建对应的ICallHandler实现。看一个简单的示例:

 1 public sealed class ConsoleOutHandlerAttribute : HandlerAttribute
 2 {
 3   public override ICallHandler CreateHandler(IUnityContainer container)
 4   {
 5     return container.Resolve<ConsoleOutHandler>();
 6   }
 7 }
 8 
 9 public sealed class ConsoleOutHandler : ICallHandler
10 {
11   #region ICallHandler Members
12 
13   public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
14   {
15     Console.WriteLine(input.MethodBase.Name);
16 
17     return getNext()(input, getNext);
18   }
19 
20   public Int32 Order { get; set; }
21 
22   #endregion
23 }
24 
25 public class MyObject
26 {
27   [ConsoleOutHandler]
28   public virtual void DoWork()
29   {
30 
31   }
32 }
33 
34 IUnityContainer unityContainer = new UnityContainer();
35 
36 unityContainer.LoadConfiguration();
37 unityContainer.RegisterType<ICallHandler, ConsoleOutHandler>();
38 unityContainer.RegisterType<MyObject>(
39   new Interceptor<VirtualMethodInterceptor>(),
40   new InterceptionBehavior<PolicyInjectionBehavior>()
41 );
42 
43 MyObject myObject = unityContainer.Resolve<MyObject>();
44 
45 myObject.DoWork();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值