AOP Practice with AspectWeaver0.6 - DebugPropertyValueModifying

来源:互联网 发布:数据统计怎么做 编辑:程序博客网 时间:2024/05/22 10:48

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 

原创粉丝点击