/// <summary> /// Creates and initialize an instance without a factory /// </summary> /// <param name="type">type to create</param> /// <param name="caller">caller</param> /// <param name="instance">replaced instance</param> /// <param name="comProxy">com proxy</param> /// <param name="comProxyType">com proxy type</param> /// <returns></returns> private ICOMObject CreateInstanceInternal(Type type, ICOMObject caller, ICOMObject instance, object comProxy, Type comProxyType) { ICOMObject result = ComActivator.CreateInitializeInstanceWithoutFactory(instance.Factory, type, caller, comProxy, comProxyType) as ICOMObject; if (null != result) { if (null != caller) { caller.RemoveChildObject(instance); } Parent.InternalObjectRegister.RemoveObjectFromList(instance, null); } return(result); }
/// <summary> /// Initialize replace instance if necessary /// </summary> /// <param name="caller">calling instance</param> /// <param name="instance">instance to replace</param> /// <param name="replaceInstance">new replaced instance</param> private void ProceedReplaceByEventInstance(ICOMObject caller, ICOMObject instance, ICOMObject replaceInstance) { ICOMObjectInitialize init = replaceInstance as ICOMObjectInitialize; if (null != init && false == init.IsInitialized) { init.InitializeCOMObject(Parent, caller, instance.UnderlyingObject, instance.UnderlyingType); } if (null != caller) { caller.RemoveChildObject(instance); } Parent.InternalObjectRegister.RemoveObjectFromList(instance, null); }