[Mono-list] How to do code injection with .NET

Lluis Sanchez lluis@ideary.com
Thu, 20 Feb 2003 22:25:40 +0100


You can do it using ContextBoundObjects. Using ContextAttribute you can
create message sinks through which will flow all method calls. You then can
intercept a call to an object and make whatever check you want. However, it
only works with calls between contexts.

Unfortunately, it doesn't work in mono yet, but soon will :-)


----- Original Message -----
From: Philippe Lavoie
To: mono-list@ximian.com
Sent: Thursday, February 20, 2003 6:05 PM
Subject: [Mono-list] How to do code injection with .NET


I've been reading a little about Aspect Oriented Design. And it seems
objects inheriting from ContextBoundObject allow you to do that, although
with some limitation, i.e. the framework only work with a context per class
maximum (I couldn't find a way to have a new context for every method call
inside the same class).

I was wondering if I could do something like in J2EE, i.e.

  public void EditMethod(){

The above would in turn inject code inside the method that would be like

public void EditMethod(){
  if(! ContextUtils.GetPriviledgeContext().HasPriviledge("EditProfile")){
     throw Security("Insufficient priviledge");

Is there a way at compile time (or runtime) to do this with mono (or