【发布时间】:2010-09-04 01:18:25
【问题描述】:
我是 Unity 2.0 的 AOP 功能的第一次用户,希望得到一些建议。我的目标是能够在 ASPX 页面中记录方法调用,如下所示:
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 来做同样的事情。
干杯。 贾斯。
【问题讨论】:
标签: unity-container aop