49

Are there any good resources to wrap my head around Aspect Oriented Programming?

PS: I need to understand AO programming, not the libraries or frameworks available for .NET or C# :)

2

4 Answers 4

56

Just to get your head around it: It is the ability to hook events such as: creation of objects, setting of properties, etc, and attach general functions to them, that will be populated with relevant context.

Because C# doesn't have an inbuilt facility for this, you need a framework, like PostSharp, to do 'bytecode weaving' (i.e. just writing code to actually make the calls, directly to your classes) to simulate it.

Sign up to request clarification or add additional context in comments.

3 Comments

On a side note, postsharp.org has a great explanation of what it is and it's uses.
Yes postsharp is good thing (also have good site!)
runtime emit is also good. Unity and others use reflection emit to do method interception. Also .net does have a hook ContextBoundObjects like Jean mentioned. Unfortunetly there is a huge perf hit with context bound objects.
4

check this out, it is describing how to implement AOP ( log, timing, tracing, exception handling...) using postsharp

http://www.codeproject.com/Articles/337564/Aspect-Oriented-Programming-Using-Csharp-and-PostS

Comments

3

Aspect Oriented Programming means having a meta level where yo can define logging or security/access control features to interweave with your code instead of implementing these feature very time in your code. So instead of beeing one-dimensional, you have to program two-dimensional.

I know this may sound very esotheric but it is easy once you understood it.

AOP often works with proxy classes which intercept calls and do things in the background.

Comments

3

A good link below, shows you how to code up an AOP framework of your own. Unfortunately, all of your consuming classes have to inherit from the MarshalByRefObject (through ContextBoundObject).

http://www.developerfusion.com/article/5307/aspect-oriented-programming-using-net/3/

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.