IEnumerable <object> IEffectParameterValueGenerator.GenerateValues(ParameterKey key) { if (!((From < To && Step <= 0) || (From > To && Step >= 0))) // condition to have a finite set of value within the range { //var converType = key.PropertyType; // TODO: code is not safe if step is zero or (from-to)/step is very high if (From == To) { yield return(key.ConvertValue(From));//Convert.ChangeType(From, converType)); } else if (From < To) { for (var value = From; value - To < 0.000001; value += Step) { yield return(key.ConvertValue(value));//Convert.ChangeType(value, converType); } } else if (From > To) { for (var value = From; To - value < 0.000001; value += Step) { yield return(key.ConvertValue(value));//Convert.ChangeType(value, converType); } } } }
void IEffectParameterValueGenerator.AddValue(ParameterKey key, object value) { this.Add((T)key.ConvertValue(value)); }
IEnumerable <object> IEffectParameterValueGenerator.GenerateValues(ParameterKey key) { return(this.Select(value => key.ConvertValue(value))); }