Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/04/10 04:52:28 (15 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • implemented reviewers' comments on version r2917.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs

    r2891 r2924  
    3030  /// </summary>
    3131  [Item("ValueParameter<T>", "A parameter whose value is defined it the parameter itself.")]
    32   public sealed class ValueParameter<T> : Parameter, IValueParameter<T> where T : class, IItem {
    33     private T value;
    34     [Storable]
    35     public T Value {
    36       get { return this.value; }
     32  [EmptyStorableClass]
     33  public class ValueParameter<T> : OptionalValueParameter<T> where T : class, IItem {
     34    public override T Value {
     35      get { return base.Value; }
    3736      set {
    3837        if (value == null) throw new ArgumentNullException();
    39         if (value != this.value) {
    40           if (this.value != null) this.value.Changed -= new ChangedEventHandler(Value_Changed);
    41           this.value = value;
    42           this.value.Changed += new ChangedEventHandler(Value_Changed);
    43           OnValueChanged();
    44         }
    45       }
    46     }
    47     IItem IValueParameter.Value {
    48       get { return Value; }
    49       set {
    50         if (value == null) throw new ArgumentNullException();
    51         T val = value as T;
    52         if (val == null)
    53           throw new InvalidOperationException(
    54             string.Format("Type mismatch. Value is not a \"{0}\".",
    55                           typeof(T).GetPrettyName())
    56           );
    57         Value = val;
     38        base.Value = value;
    5839      }
    5940    }
    6041
    61     private ValueParameter()
    62       : base("Anonymous", typeof(T)) {
    63     }
    64     public ValueParameter(string name, T value)
    65       : base(name, typeof(T)) {
    66       Value = value;
    67     }
    68     public ValueParameter(string name, string description, T value)
    69       : base(name, description, typeof(T)) {
    70       Value = value;
    71     }
     42    private ValueParameter() : base() { }
     43    public ValueParameter(string name, T value) : base(name, value) { }
     44    public ValueParameter(string name, string description, T value) : base(name, description, value) { }
    7245
    7346    public override IDeepCloneable Clone(Cloner cloner) {
    74       ValueParameter<T> clone = new ValueParameter<T>(name, description, value);
     47      ValueParameter<T> clone = new ValueParameter<T>(name, description, Value);
    7548      cloner.RegisterClonedObject(this, clone);
    76       clone.Value = (T)cloner.Clone(value);
     49      clone.Value = (T)cloner.Clone(Value);
    7750      return clone;
    78     }
    79 
    80     public override string ToString() {
    81       return string.Format("{0}: {1} ({2})", Name, Value.ToString(), DataType.GetPrettyName());
    82     }
    83 
    84     protected override IItem GetActualValue() {
    85       return Value;
    86     }
    87     protected override void SetActualValue(IItem value) {
    88       ((IValueParameter)this).Value = value;
    89     }
    90 
    91     public event EventHandler ValueChanged;
    92     private void OnValueChanged() {
    93       if (ValueChanged != null)
    94         ValueChanged(this, EventArgs.Empty);
    95       OnChanged();
    96     }
    97     private void Value_Changed(object sender, ChangedEventArgs e) {
    98       OnChanged(e);
    9951    }
    10052  }
Note: See TracChangeset for help on using the changeset viewer.