Limitation on Virtual Methods and interface members

Jul 16, 2013 at 10:19 AM
Hello,
could this limitation be removed in a future version ?

As far as i understand, you produce a subclasses for the intercepted type, at post compile time, and integrate the new type into the original assembly ?
I guess this would even be possible at runtime ?!

you do not "change" the original Type, like postsharp is doing this, correct ?

i have used Castle and moved away because of the same limitations.
i have used Postsharp and have been very satisfied with the Featureset,
but since its commercial, i cant use it in Open Source Projects nor in my company, because they wouldnt agree with the AOP concept if they have to pay licences.

So i hope this project could grow to a real state of the art .Net-AOP Framework :)
Coordinator
Jul 16, 2013 at 4:22 PM
Hi Thomas,

See my answers below...

Could this limitation be removed in a future version?
I am afraid FluentAOP, or any other AOP implementation based on runtime-built proxies, can only intercept virtual or interface members.
As far as i understand, you produce a subclasses for the intercepted type, at post compile time, and integrate the new type into the original assembly ?
Sort of, FluentAOP builds a subclass (proxy) but at run-time. Actually that's why you can only intercept virtual or interface members. FluentAOP needs to override or implement those members to make interception possible.
I guess this would even be possible at runtime?
Actually it happens at runtime.
You do not "change" the original Type, like Postsharp is doing this, correct ?
Correct, FluentAOP does not touch your assemblies.
I have used Castle and moved away because of the same limitations.
Yes, they both use the same technique.
I have used Postsharp and have been very satisfied with the Featureset
Postsharp does static-weaving. That's a different technique, with advantages/disadvantages. I am sorry their license didn't work for you, but I am sure there are other free|opensource alternatives for AOP with static-weaving.