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.