62,041
社区成员
发帖
与我相关
我的任务
分享
[Serializable]
public class OverwriteResultAttribute : OnMethodBoundaryAspect
{
public override void OnExit(MethodExecutionArgs args)
{
args.ReturnValue = "zzzzzz!!!"; // 把返回值改掉
}
}
class A
{
[OverwriteResult]
public string B()
{
return "yyyy";
}
}
A a = new A();
Response.Write(a.B());
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PostSharp.Aspects;
using System.Diagnostics;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
SayHello();
SayGoodBye();
Console.ReadLine();
}
[Trace("MyCategory")]
private static void SayHello()
{
Console.WriteLine("Hello, world.");
}
[Trace("MyCategory")]
private static void SayGoodBye()
{
Console.WriteLine("Good bye, world.");
}
}
[Serializable]
public sealed class TraceAttribute : OnMethodBoundaryAspect
{
private string category;
public TraceAttribute(string category)
{
this.category = category;
}
public override void OnEntry(MethodExecutionArgs args)
{
Trace.WriteLine(string.Format("Entering {0}.{1}.",
args.Method.DeclaringType.Name, args.Method.Name), this.category);
}
public override void OnExit(MethodExecutionArgs args)
{
Trace.WriteLine(string.Format("Leaving {0}.{1}.",
args.Method.DeclaringType.Name, args.Method.Name), this.category);
}
}
}