- Timestamp:
- 11/17/10 07:41:28 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs
r4722 r4825 78 78 } 79 79 80 [Storable(DefaultValue = true)] 81 private bool reactOnValueToStringChangedAndValueItemImageChanged; 82 /// <summary> 83 /// True if this parameter should react on the ToStringChanged and ItemImageChanged events of its value, otherwise false. 84 /// </summary> 85 /// <remarks> 86 /// In some rare cases when the value of the parameter is not deeply cloned, this property has to be set to false 87 /// to avoid a memory leak (cf. ticket #1268). In all other cases this property should always be true. 88 /// </remarks> 89 public bool ReactOnValueToStringChangedAndValueItemImageChanged { 90 get { return reactOnValueToStringChangedAndValueItemImageChanged; } 91 set { 92 if (value != reactOnValueToStringChangedAndValueItemImageChanged) { 93 reactOnValueToStringChangedAndValueItemImageChanged = value; 94 if (reactOnValueToStringChangedAndValueItemImageChanged) 95 RegisterValueEvents(); 96 else 97 DeregisterValueEvents(); 98 } 99 } 100 } 101 80 102 #region Constructors 81 103 [StorableConstructor] … … 85 107 value = cloner.Clone(original.value); 86 108 getsCollected = original.getsCollected; 109 reactOnValueToStringChangedAndValueItemImageChanged = original.reactOnValueToStringChangedAndValueItemImageChanged; 87 110 RegisterValueEvents(); 88 111 } … … 90 113 : base("Anonymous", typeof(T)) { 91 114 this.getsCollected = true; 115 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 92 116 } 93 117 public OptionalValueParameter(string name) 94 118 : base(name, typeof(T)) { 95 119 this.getsCollected = true; 120 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 96 121 } 97 122 public OptionalValueParameter(string name, bool getsCollected) 98 123 : base(name, typeof(T)) { 99 124 this.getsCollected = getsCollected; 125 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 100 126 } 101 127 public OptionalValueParameter(string name, T value) … … 103 129 this.value = value; 104 130 this.getsCollected = true; 131 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 105 132 RegisterValueEvents(); 106 133 } … … 109 136 this.value = value; 110 137 this.getsCollected = getsCollected; 138 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 111 139 RegisterValueEvents(); 112 140 } … … 114 142 : base(name, description, typeof(T)) { 115 143 this.getsCollected = true; 144 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 116 145 } 117 146 public OptionalValueParameter(string name, string description, bool getsCollected) 118 147 : base(name, description, typeof(T)) { 119 148 this.getsCollected = getsCollected; 149 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 120 150 } 121 151 public OptionalValueParameter(string name, string description, T value) … … 123 153 this.value = value; 124 154 this.getsCollected = true; 155 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 125 156 RegisterValueEvents(); 126 157 } … … 129 160 this.value = value; 130 161 this.getsCollected = getsCollected; 162 this.reactOnValueToStringChangedAndValueItemImageChanged = true; 131 163 RegisterValueEvents(); 132 164 } … … 143 175 144 176 public override string ToString() { 145 return Name + ": " + (Value != null ? Value.ToString() : "null"); 177 if (reactOnValueToStringChangedAndValueItemImageChanged) 178 return Name + ": " + (Value != null ? Value.ToString() : "null"); 179 else 180 return Name; 146 181 } 147 182 … … 167 202 168 203 private void RegisterValueEvents() { 169 if ( value != null) {204 if ((value != null) && reactOnValueToStringChangedAndValueItemImageChanged) { 170 205 value.ItemImageChanged += new EventHandler(Value_ItemImageChanged); 171 206 value.ToStringChanged += new EventHandler(Value_ToStringChanged);
Note: See TracChangeset
for help on using the changeset viewer.