Marshal by value objects can be returned through an indirection, allowing the caller to control when the object is loaded into their domain. The caller can unwrap the object from the indirection through this interface. The class implementing the  IObjectHandle interface can be used to pass an object (in a wrapped state) between multiple application domains without loading the metadata for the wrapped object in each  AppDomain through which the  IObjectHandle travels. Thus, the  IObjectHandle class gives the caller control of when the  Type of the remote object is loaded into their domain.