- Timestamp:
- 03/04/10 04:52:28 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs
r2891 r2924 30 30 /// </summary> 31 31 [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; } 37 36 set { 38 37 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; 58 39 } 59 40 } 60 41 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) { } 72 45 73 46 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); 75 48 cloner.RegisterClonedObject(this, clone); 76 clone.Value = (T)cloner.Clone( value);49 clone.Value = (T)cloner.Clone(Value); 77 50 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);99 51 } 100 52 }
Note: See TracChangeset
for help on using the changeset viewer.