Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/19/10 03:28:16 (14 years ago)
Author:
swagner
Message:

Restricted types of child operators in MultiOperator (#979)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs

    r3386 r3407  
    9090    protected OperatorGraph(bool deserializing) : base(deserializing) { }
    9191
    92     //mkommend: IMPROTANT DO NOT REMOVE THIS PRIVATE EVENT
     92    //mkommend: IMPORTANT DO NOT REMOVE THIS PRIVATE EVENT
    9393    //needed to register OperatorGraph events in GraphVisualizationInfo
    9494    public event EventHandler DeserializationFinished;
     
    144144      var opParams = from o in Operators
    145145                     from p in o.Parameters
    146                      where p is IValueParameter<IOperator>
    147                      where (((IValueParameter<IOperator>)p).Value != null) && (((IValueParameter<IOperator>)p).Value == op)
    148                      select (IValueParameter<IOperator>)p;
    149       foreach (IValueParameter<IOperator> opParam in opParams)
     146                     where p is IValueParameter
     147                     where typeof(IOperator).IsAssignableFrom(((IValueParameter)p).DataType)
     148                     where (((IValueParameter)p).Value != null) && (((IValueParameter)p).Value == op)
     149                     select (IValueParameter)p;
     150      foreach (IValueParameter opParam in opParams)
    150151        opParam.Value = null;
    151152    }
    152153    private void AddParameter(IParameter param) {
    153       IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    154       if (opParam != null) {
    155         RegisterOperatorParameterEvents(opParam);
    156         if (opParam.Value != null) Operators.Add(opParam.Value);
     154      IValueParameter valueParam = param as IValueParameter;
     155      if ((valueParam != null) && (typeof(IOperator).IsAssignableFrom(valueParam.DataType))) {
     156        RegisterOperatorParameterEvents(valueParam);
     157        if (valueParam.Value != null) Operators.Add((IOperator)valueParam.Value);
    157158      }
    158159    }
    159160    private void RemoveParameter(IParameter param) {
    160       IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    161       if (opParam != null) {
    162         DeregisterOperatorParameterEvents(opParam);
     161      IValueParameter valueParam = param as IValueParameter;
     162      if ((valueParam != null) && (typeof(IOperator).IsAssignableFrom(valueParam.DataType))) {
     163        DeregisterOperatorParameterEvents(valueParam);
    163164      }
    164165    }
     
    171172        foreach (IOperator op in operators) {
    172173          RegisterOperatorEvents(op);
    173           foreach (IParameter param in op.Parameters) {
    174             IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    175             if (opParam != null) RegisterOperatorParameterEvents(opParam);
    176           }
     174          var opParams = from p in op.Parameters
     175                         where p is IValueParameter
     176                         where typeof(IOperator).IsAssignableFrom(((IValueParameter)p).DataType)
     177                         select (IValueParameter)p;
     178          foreach (IValueParameter opParam in opParams)
     179            RegisterOperatorParameterEvents(opParam);
    177180        }
    178181      }
     
    190193      op.Parameters.CollectionReset -= new CollectionItemsChangedEventHandler<IParameter>(Parameters_CollectionReset);
    191194    }
    192     private void RegisterOperatorParameterEvents(IValueParameter<IOperator> opParam) {
     195    private void RegisterOperatorParameterEvents(IValueParameter opParam) {
    193196      opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
    194197    }
    195     private void DeregisterOperatorParameterEvents(IValueParameter<IOperator> opParam) {
     198    private void DeregisterOperatorParameterEvents(IValueParameter opParam) {
    196199      opParam.ValueChanged -= new EventHandler(opParam_ValueChanged);
    197200    }
     
    234237    }
    235238    private void opParam_ValueChanged(object sender, EventArgs e) {
    236       IValueParameter<IOperator> opParam = (IValueParameter<IOperator>)sender;
    237       if (opParam.Value != null) Operators.Add(opParam.Value);
     239      IValueParameter opParam = (IValueParameter)sender;
     240      if (opParam.Value != null) Operators.Add((IOperator)opParam.Value);
    238241    }
    239242    #endregion
Note: See TracChangeset for help on using the changeset viewer.