| 1234567891011121314151617181920212223242526272829303132333435 | 
							- #nullable enable
 
- using System;
 
- using System.ComponentModel;
 
- using System.Globalization;
 
- using InABox.Core;
 
- using JetBrains.Annotations;
 
- using Xamarin.Forms;
 
- namespace InABox.Mobile
 
- {
 
-     
 
-     public abstract class AbstractConverter<TIn, TOut> : BindableObject, 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);
 
-         }
 
-         
 
-     }
 
- }
 
 
  |