Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/23/10 06:50:50 (14 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • worked on algorithms
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs

    r2851 r2852  
    3636    }
    3737
     38    public virtual Type ProblemType {
     39      get { return typeof(IProblem); }
     40    }
     41
    3842    private IProblem problem;
    3943    [Storable]
     
    4246      set {
    4347        if (problem != value) {
    44           if (problem != null) problem.Changed -= new ChangedEventHandler(Problem_Changed);
     48          if ((value != null) && !ProblemType.IsInstanceOfType(value)) throw new ArgumentException("Invalid problem type.");
     49          if (problem != null) DeregisterProblemEvents();
    4550          problem = value;
    46           if (problem != null) problem.Changed += new ChangedEventHandler(Problem_Changed);
     51          if (problem != null) RegisterProblemEvents();
    4752          OnProblemChanged();
    4853        }
     
    135140        ExceptionOccurred(this, new EventArgs<Exception>(exception));
    136141    }
     142    protected virtual void DeregisterProblemEvents() {
     143      problem.SolutionCreatorChanged -= new EventHandler(Problem_SolutionCreatorChanged);
     144      problem.EvaluatorChanged -= new EventHandler(Problem_EvaluatorChanged);
     145      problem.Changed -= new ChangedEventHandler(Problem_Changed);
     146    }
     147    protected virtual void RegisterProblemEvents() {
     148      problem.SolutionCreatorChanged += new EventHandler(Problem_SolutionCreatorChanged);
     149      problem.EvaluatorChanged += new EventHandler(Problem_EvaluatorChanged);
     150      problem.Changed += new ChangedEventHandler(Problem_Changed);
     151    }
     152
     153    protected virtual void Problem_SolutionCreatorChanged(object sender, EventArgs e) { }
     154    protected virtual void Problem_EvaluatorChanged(object sender, EventArgs e) { }
    137155    private void Problem_Changed(object sender, ChangedEventArgs e) {
    138156      OnChanged(e);
Note: See TracChangeset for help on using the changeset viewer.