我是Unity 2.0 AOP功能的首次使用者,希望得到一些建議。我的目標是能在一個ASPX頁面登錄方法調用,像這樣:Intercept Unity 2.0 HandlerAttribute無界面
public partial class Page2 : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[Log]
private void Testing()
{
}
}
下面是LogAttribute
代碼:
public class LogAttribute : HandlerAttribute
{
public override ICallHandler CreateHandler(IUnityContainer container)
{
return new LogHandler(Order);
}
}
現在LogHandler
:
public class LogHandler : ICallHandler
{
public LogHandler(int order)
{
Order = order;
}
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
string className = input.MethodBase.DeclaringType.Name;
string methodName = input.MethodBase.Name;
string preMethodMessage = string.Format("{0}.{1}", className, methodName);
System.Diagnostics.Debug.WriteLine(preMethodMessage);
return getNext()(input, getNext);
}
public int Order { get; set; }
}
我遇到的問題是如何使用[Log]
屬性。我見過很多例子中如何配置攔截設置,例如:
container.AddNewExtension<Interception>();
container.Configure<Interception>().SetDefaultInterceptorFor<ILogger>(new InterfaceInterceptor());
但這意味着我有一個接口進行攔截,這我不知道。我有使用[Log]
屬性的ASPX頁面。
那麼我該如何配置Unity以利用[Log]
屬性?在使用PostSharp之前,我已經完成了這項工作,並希望能夠使用Unity來完成相同的工作。
乾杯。 Jas。