using System.Linq.Expressions;
public class HelloWorldAspect : OnMethodBoundaryAspect
public override void OnEntry(MethodExecutionArgs args)
Console.WriteLine("OnEntry: Hello KingAOP");
public override void OnExit(MethodExecutionArgs args)
Console.WriteLine("OnExit: Hello KingAOP");
public override void OnException(MethodExecutionArgs args)
Console.WriteLine("OnException: Hello KingAOP");
public override void OnSuccess(MethodExecutionArgs args)
Console.WriteLine("OnSuccess: Hello KingAOP");
public class CheckSomething : MethodInterceptionAspect
public override void OnInvoke(MethodInterceptionArgs args)
Console.WriteLine("OnInvoke: Stop Here");
public class HelloWorld : IDynamicMetaObjectProvider
public void HelloWorldCall()
Console.WriteLine("-----------Hello World--------");
Console.WriteLine("good bye");
public DynamicMetaObject GetMetaObject(Expression parameter)
return new AspectWeaver(parameter, this);
public static void Main(string[] args)
dynamic helloWorld = new HelloWorld();
helloWorld.HelloWorldCall();