public override void Disconnect() { CasterLogger.Debug($"Port {this.ComponentName} is disconnecting"); if (paramCollection != null && paramCollection.GetType().IsCOMObject) { Marshal.FinalReleaseComObject(paramCollection); } paramCollection = null; CasterLogger.Debug($"Port {this.ComponentName} disconnected."); }
/// <summary> /// connect to information, must be ICapeCollection /// </summary> public override void Connect(object objectToConnect) { CasterLogger.Debug($"Port {this.ComponentName} is connecting"); Disconnect(); if (objectToConnect is ICapeCollection) { paramCollection = objectToConnect as ICapeCollection; } else { throw new ECapeUnknownException(this, "object connected to information port must be ICapeCollection"); } CasterLogger.Debug($"Port {this.ComponentName} connected."); }
override public void Initialize() { ICapeUtilitiesCOM p_Util = ((ICapeUtilitiesCOM)this.p_Unit); p_Util.Initialize(); ICapeIdentification p_Id = (ICapeIdentification)p_Unit; //wrap ports... ICapeCollection portColl = (ICapeCollection)((ICapeUnitCOM)(p_Unit)).ports; int portCount = portColl.Count(); object[] portConnections = new object[portCount]; for (int i = 0; i < portCount; i++) { ICapeUnitPortCOM port = (ICapeUnitPortCOM)portColl.Item(i + 1); this.Ports.Add(new UnitPortWrapper(port)); } //wrap parameters... ICapeCollection paramColl = (ICapeCollection)((ICapeUtilitiesCOM)(p_Unit)).parameters; int paramCount = paramColl.Count(); for (int i = 0; i < paramCount; i++) { ICapeParameter param = (ICapeParameter)paramColl.Item(i + 1); CapeParamType paramType = ((ICapeParameterSpecCOM)param.Specification).Type; if (((ICapeParameterSpecCOM)param.Specification).Type == CapeParamType.CAPE_REAL) { this.Parameters.Add(new RealParameterWrapper(param)); } if (((ICapeParameterSpecCOM)param.Specification).Type == CapeParamType.CAPE_INT) { this.Parameters.Add(new IntegerParameterWrapper(param)); } if (((ICapeParameterSpecCOM)param.Specification).Type == CapeParamType.CAPE_OPTION) { this.Parameters.Add(new OptionParameterWrapper(param)); } if (((ICapeParameterSpecCOM)param.Specification).Type == CapeParamType.CAPE_BOOLEAN) { this.Parameters.Add(new BooleanParameterWrapper(param)); } if (((ICapeParameterSpecCOM)param.Specification).Type == CapeParamType.CAPE_ARRAY) { this.Parameters.Add(new ArrayParameterWrapper(param)); } } }