C# 方面类代码可以';在剑杆织机中不能与目标类代码交织
我“使用C#Visual Studio 2008.net”编写了aspect类和目标类,但每次我运行应用程序将它们交织在一起时,只执行目标类,但我无法执行aspect类,我尝试将引用附加到rapier Lowe,并尝试卸载rapier Lowe并再次安装,但出现了相同的问题……问题是什么有问题吗 这是aspect类:C# 方面类代码可以';在剑杆织机中不能与目标类代码交织,c#,aspect,rapier-loom,C#,Aspect,Rapier Loom,我“使用C#Visual Studio 2008.net”编写了aspect类和目标类,但每次我运行应用程序将它们交织在一起时,只执行目标类,但我无法执行aspect类,我尝试将引用附加到rapier Lowe,并尝试卸载rapier Lowe并再次安装,但出现了相同的问题……问题是什么有问题吗 这是aspect类: 问题是,您通过ctx.Instance调用从advice方法隐式调用了目标类的ToString()方法。这将导致无休止的递归,因为ToString也由advice方法交织在一起 u
问题是,您通过
ctx.Instance
调用从advice方法隐式调用了目标类的ToString()
方法。这将导致无休止的递归,因为ToString也由advice方法交织在一起
using System;
using Loom;
using Loom.JoinPoints;
namespace HelloAspect
{
public class TraceAspect : Aspect
{
[Loom.JoinPoints.IncludeAll]
[Call(Advice.Around)]
public T Trace<T>([JPContext]Context ctx, params object[] args)
{
Console.WriteLine(ctx.Instance + "." + ctx.CurrentMethod.Name + " called");
ctx.Invoke(args);
return default(T);
}
}
}
using System;
using Loom;
using Loom.JoinPoints;
namespace HelloAspect
{
class Program
{
static void Main(string[] args)
{
string name;
Console.Write("Your name: ");
name = Console.ReadLine();
TraceAspect aspect1 = new TraceAspect();
Target target = Loom.Weaver.Create<Target>(aspect1);
target.Hello(name);
Console.ReadLine();
}
}
}
public class Target
{
public virtual void Hello(string name)
{
Console.WriteLine("Hello {0}!", name);
}
}