Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/13/10 06:41:56 (14 years ago)
Author:
swagner
Message:

Implemented ReadOnlyView property for items (#969).

File:
1 edited

Legend:

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

    r3160 r3317  
    3737  [StorableClass]
    3838  public class OperatorGraph : Item {
     39    [Storable]
    3940    private OperatorSet operators;
    4041    /// <summary>
    4142    /// Gets all operators of the current instance.
    4243    /// </summary>
    43     [Storable]
    4444    public OperatorSet Operators {
    4545      get { return operators; }
    46       private set {
    47         DeregisterOperatorsEvents();
    48         operators = value;
    49         RegisterOperatorsEvents();
    50       }
    5146    }
    5247
     
    8782    /// </summary>
    8883    public OperatorGraph() {
    89       Operators = new OperatorSet();
     84      operators = new OperatorSet();
    9085      initialOperator = null;
    9186      visualizationInfo = null;
     87      Initialize();
     88    }
     89    [StorableConstructor]
     90    protected OperatorGraph(bool deserializing) : base(deserializing) { }
     91
     92    [StorableHook(HookType.AfterDeserialization)]
     93    private void Initialize() {
     94      RegisterOperatorsEvents();
    9295    }
    9396
     
    100103    /// <returns>The cloned object as <see cref="OperatorGraph"/>.</returns>
    101104    public override IDeepCloneable Clone(Cloner cloner) {
    102       OperatorGraph clone = new OperatorGraph();
    103       cloner.RegisterClonedObject(this, clone);
    104       clone.Operators = (OperatorSet)cloner.Clone(operators);
     105      OperatorGraph clone = (OperatorGraph)base.Clone(cloner);
     106      clone.operators = (OperatorSet)cloner.Clone(operators);
    105107      clone.initialOperator = (IOperator)cloner.Clone(initialOperator);
    106108      clone.visualizationInfo = cloner.Clone(visualizationInfo);
     109      clone.Initialize();
    107110      return clone;
    108111    }
     
    166169      }
    167170    }
    168     private void DeregisterOperatorsEvents() {
    169       if (operators != null) {
    170         foreach (IOperator op in operators) {
    171           foreach (IParameter param in op.Parameters) {
    172             IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
    173             if (opParam != null) DeregisterOperatorParameterEvents(opParam);
    174           }
    175           DeregisterOperatorEvents(op);
    176         }
    177         operators.ItemsAdded -= new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsAdded);
    178         operators.ItemsRemoved -= new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsRemoved);
    179         operators.CollectionReset -= new CollectionItemsChangedEventHandler<IOperator>(Operators_CollectionReset);
    180       }
    181     }
    182171    private void RegisterOperatorEvents(IOperator op) {
    183172      op.Parameters.ItemsAdded += new CollectionItemsChangedEventHandler<IParameter>(Parameters_ItemsAdded);
Note: See TracChangeset for help on using the changeset viewer.