Changeset 12411 for branches/TerminationCriteria/HeuristicLab.Termination/3.3/ThresholdTerminator.cs
- Timestamp:
- 06/01/15 16:47:32 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/TerminationCriteria/HeuristicLab.Termination/3.3/ThresholdTerminator.cs
r12410 r12411 27 27 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 28 28 29 30 29 namespace HeuristicLab.Termination { 31 30 [Item("ThresholdTerminator", "Base class for all termination criteria which specifies some threshold.")] 32 31 [StorableClass] 33 public abstract class ThresholdTerminator<T> : Terminator, IThresholdTerminator where T : class, IItem, IStringConvertibleValue, new() { 32 public abstract class ThresholdTerminator<T> : Terminator, ISingleValueTerminator where T : class, IItem, IStringConvertibleValue, new() { 33 [Storable] 34 private IFixedValueParameter<T> thresholdParameter; 34 35 public IFixedValueParameter<T> ThresholdParameter { 35 get { return (IFixedValueParameter<T>)Parameters["Threshold"]; } 36 get { return thresholdParameter; } 37 set { 38 if (value == null) throw new ArgumentNullException("Threshold parameter must not be null."); 39 if (value.Value == null) throw new ArgumentNullException("Threshold parameter value must not be null."); 40 if (thresholdParameter == value) return; 41 42 if (thresholdParameter != null) Parameters.Remove(thresholdParameter); 43 thresholdParameter = value; 44 Parameters.Add(thresholdParameter); 45 OnThresholdParameterChanged(); 46 } 36 47 } 37 IParameter I ThresholdTerminator.ThresholdParameter {48 IParameter ISingleValueTerminator.ThresholdParameter { 38 49 get { return ThresholdParameter; } 39 50 } … … 51 62 protected ThresholdTerminator(ThresholdTerminator<T> original, Cloner cloner) 52 63 : base(original, cloner) { 64 thresholdParameter = cloner.Clone(original.thresholdParameter); 53 65 Initialize(); 54 66 } … … 58 70 : base() { 59 71 if (threshold == null) throw new ArgumentNullException("threshold"); 60 Parameters.Add(new FixedValueParameter<T>("Threshold", "The limit of the termiation criterion.", threshold)); 72 thresholdParameter = new FixedValueParameter<T>("Threshold", "The limit of the termiation criterion.", threshold); 73 Parameters.Add(thresholdParameter); 61 74 Initialize(); 62 75 } 63 76 64 77 private void Initialize() { 65 Threshold.ValueChanged += new EventHandler(Threshold_ValueChanged);78 RegisterThresholdParameterEvents(); 66 79 } 67 80 … … 73 86 } 74 87 88 private void OnThresholdParameterChanged() { 89 RegisterThresholdParameterEvents(); 90 } 91 92 private void RegisterThresholdParameterEvents() { 93 Threshold.ValueChanged += new EventHandler(Threshold_ValueChanged); 94 } 95 75 96 public override string ToString() { 76 97 if (ThresholdParameter.Value == null) return Name;
Note: See TracChangeset
for help on using the changeset viewer.