AOP Practice with AspectWeaver0.6 - DebugPropertyValueModifying

In No Buzzword AOP --- When we don't have aop, idior described a property debugging situation.

This is the AOP way based on AspectWeaver0.6.

DebugPropertyModifyingAspect.cs:

using System;
using AspectWeaver.Aspects;

namespace TestAspects
{
    
public class DebugPropertyModifyingAspect : Aspect
    
{
        [InlineAtStart(
"//Method[starts-with(@name, 'set_')]"), InlineBeforeReturn("//Method[starts-with(@name, 'set_')]")]
        
public void CodeForPrintPropertyValue()
        
{
            
string contextInfo = GetContextInfo();
            
string propertyName = contextInfo.Substring(contextInfo.IndexOf("_"+ 1, contextInfo.IndexOf("("- contextInfo.IndexOf("_"- 1);
            Console.WriteLine(
string.Format("{0}={1}", propertyName, this.GetType().GetProperty(propertyName).GetValue(thisnull)));
        }

    }

}

Open "DebugPropertyValueModifying\DebugPropertyValueModifying.sln" to rebuild all projects.

Run "DebugPropertyValueModifying\TestConsole\bin\Debug\TestConsole.exe" before and after weaving.

Execute "DebugPropertyValueModifying\DoWeave.bat" to do the weaving.

TestConsole.exe running result before weaving:

Running OK!
Press any key to continue...


TestConsole.exe running result after weaving:

Name=
Name=name1
Name=name1
Name=name2
ID=0
ID=1
ID=1
ID=2
Speed=0
Speed=10
Speed=10
Speed=100.5
Speed=100.5
Speed=1221.12
Running OK!
Press any key to continue...


Download Source Code 

posted @ 2005-10-10 18:40  Teddy's Knowledge Base  Views(2206)  Comments(2Edit  收藏  举报