如果每个方法都需要增加一个Key的话,那么代码会很杂乱。
后来研究了一下,用Castle挺简单的,看别人的Demo,代码Copy一下即可。
由于框架是一个类库,所以AspectSharp的配置文件只能是用嵌入资源。
为了偷懒,我就直接用txt文件保存
需要做的步骤:
1。建立一个配置文件保存需要注入的代码配置
   
import Wildfish.DataAccess.Base.AOP.Interceptors in Wildfish

interceptors [ "logger" : LoggerInterceptor ]

aspect IBaseDataAccessLogger for [ assignableFrom(IBaseDataAccess) ]
pointcut method(*)
advice("logger")
end
end

以上表示我的Interceptor存在Wildfish.dll的Wildfish.DataAccess.Base.AOP.Interceptors空间下
声明了一个interceptors [key=logger,object=LoggerInterceptor ]
定义了一个Aspect 适用于实现了IBaseDataAccess接口的对象。
  pointcut method(*)表示我要捕获所有的方法
  advice("logger") 表示我要往这些方法注入logger的invoke方法
2,定义一个LoggerInterceptor

为Wildfish框架增加方法调用日志-[Aspectsharp]using System;
为Wildfish框架增加方法调用日志-[Aspectsharp]
using System.Collections.Generic;
为Wildfish框架增加方法调用日志-[Aspectsharp]
using System.Text;
为Wildfish框架增加方法调用日志-[Aspectsharp]
using AopAlliance.Intercept;
为Wildfish框架增加方法调用日志-[Aspectsharp]
using System.Reflection;
为Wildfish框架增加方法调用日志-[Aspectsharp]
using Wildfish.SystemFrameWork.Base;
为Wildfish框架增加方法调用日志-[Aspectsharp]
为Wildfish框架增加方法调用日志-[Aspectsharp]
namespace Wildfish.DataAccess.Base.AOP.Interceptors

实现一个接口IMethodInterceptor
主要是Invoke方法
    里面的调用表明
    1。记录方法名字
    2。调用方法
    3。返回调用返回值
3。在需要获取该对象的地方,通过AspectEngine 包装一下你要获取的那个对象
为Wildfish框架增加方法调用日志-[Aspectsharp]IBaseDataAccess clonedDataAccess=baseDataAccess.Clone() as IBaseDataAccess;
为Wildfish框架增加方法调用日志-[Aspectsharp]            
if (dataAccessSection.NeedTrace)

4.开关定义在wildfish.config.xml里面
   如果为true,则自动调用方法注入,否则,不调用。
 
run 完之后,得到如下log
2006-04-05 00:26:34,995 [524] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: Clone
2006-04-05 00:26:46,552 [524] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: Clone
2006-04-05 00:26:46,803 [524] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: Clone
2006-04-05 00:29:49,670 [632] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: FillDataSetByAll
2006-04-05 00:29:59,295 [632] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: CheckExist
2006-04-05 00:29:59,395 [632] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: InsertObjectData
2006-04-05 00:29:59,495 [632] DEBUG WildfishLogger - [Aspect# Logger Interceptor][method]Name: FillDataSetByAll

:)

相关文章:

  • 2018-09-17
  • 2022-12-23
  • 2021-07-31
  • 2021-12-24
  • 2021-07-14
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2018-06-08
  • 2022-01-20
  • 2022-12-23
  • 2021-03-30
相关资源
相似解决方案