| 1234567891011121314151617181920212223242526272829 | using System.Globalization;using Avalonia.Data.Converters;using CommunityToolkit.Mvvm.ComponentModel;namespace InABox.Avalonia.Converters;public abstract class AbstractConverter<TIn, TOut> : ObservableObject, IValueConverter{        protected abstract TOut? Convert(TIn? value, object? parameter = null);    protected virtual TIn? Deconvert(TOut? value, object? parameter = null)    {        return default;    }        public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)    {        var typed = value is TIn tin ? tin : default;        return Convert(typed, parameter);    }    public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)    {        var typed = value is TOut tout ? tout : default;        return Deconvert(typed, parameter);    }    }
 |