Classes that inherit from ContextBoundObject methods by passing messages, rather than a traditional stack-based execution model. This ability is used as the basis for remote and COM communications. One interesting option is that it becomes possible to intercept method calls using attributes, which allows you to use a kind of βbad AOP personβ.
One way to get rid of the logic provided by the attributes would be to create a configuration file to override which class is created with the new class. This feature is only available for classes that inherit from MarshalByRef, which is the base class for ContextBoundObject.
Another option would be to instantiate the class using reflection. That is, to find a specific ConstructorInfo and call it to create an instance. When you are just a βnewβ instance, the call is redirected to Activator.CreateInstance, which probably gives you a proxy object for the actual class. Creating an object directly can get around this, although this is a shot in the dark.
source share