All Components in .NET inherit from MarshalByRefObject
which brings along a lot of baggage with it. This class is used primarily for marshaling data between .NET and COM but was also used for some older remoting technologies introduced in .NET 2.0.
In a nutshell, MarshalByRefObject
allows the runtime to insert message sinks into your object effectively intercepting method and property calls.
Generally speaking, don't inherit from or use objects inheriting from Component
and or MarshalByRefObject
unless you have to.
What is the major use of MarshalByRefObject?