| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
using System.ComponentModel;using System.Globalization;using JetBrains.Annotations;namespace InABox.Avalonia.Converters;public abstract class AbstractNumericArrayConverter<TValue> : TypeConverter{    protected abstract TValue[] Convert(IEnumerable<string> values);        public override object ConvertFrom(        ITypeDescriptorContext context, CultureInfo culture, object value)    {        if (value is string list)        {            try            {                var result =  Convert(list.Split(','));                return result;            }            catch            {                            }        }        return new TValue[] { };    }    public override bool CanConvertFrom(        ITypeDescriptorContext context, Type sourceType)    {        if (sourceType == typeof(string))            return true;        return base.CanConvertFrom(context, sourceType);    }}public abstract class AbstractNumericCalculator<TValue,TFunction> : AbstractCalculator<TValue, TFunction, NumericCalculatorType>     where TFunction : AbstractCalculatorFunction<TValue,NumericCalculatorType>, new(){        [CanBeNull] public abstract TValue[] Constants { get; set; }        protected override TValue Convert(IEnumerable<TValue> value, object parameter = null)    {        var enumerable = value as TValue[] ?? value.ToArray();        var values = Constants != null            ? Constants.Concat(enumerable.ToArray())            : enumerable;        return base.Convert(values, parameter);    }}
 |