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 (this, null )));
}
}
}
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