/// <summary>
        /// Set MaterialObject to this class
        /// </summary>
        /// <paramCollection name="material">MaterialObject</paramCollection>
        /// <returns></returns>
        public bool SetMaterial(MaterialObject material)
        {
            CasterLogger.Debug("SetMaterial");
            var result = SetMaterial((object)material);

            CasterLogger.Debug("SetMaterial " + (result? "successed." : "failed."));
            return(result);
        }
 public override void Disconnect()
 {
     CasterLogger.Debug($"Port {this.ComponentName} is disconnecting");
     if (_materialObject != null)
     {
         _materialObject.Dispose();
     }
     _materialObject = null;
     CasterLogger.Debug($"Port {this.ComponentName} is disconnected.");
 }
 /// <summary>
 /// connect to stream, can be CO1.0 ICapeThermoMaterialObject or CO1.1 ICapeThermoMaterial
 /// </summary>
 public override void Connect(object objectToConnect)
 {
     CasterLogger.Debug($"Port {this.ComponentName} is connecting");
     Disconnect();
     if (objectToConnect is ICapeThermoMaterial)
     {
         _materialObject = new MaterialObject11(objectToConnect);
     }
     else if (objectToConnect is ICapeThermoMaterialObject)
     {
         _materialObject = new MaterialObject10(objectToConnect);
     }
     else
     {
         CasterLogger.Error("object connected to material port must be ICapeThermoMaterial or ICapeThermoMaterialObject");
         throw new ECapeUnknownException(this, "object connected to material port must be ICapeThermoMaterial or ICapeThermoMaterialObject");
     }
     CasterLogger.Debug($"Port {this.ComponentName} connected.");
 }