bool GetField <T>(string fieldName, out T value, T defaultValue) { var obj = GetField(fieldName); if (obj != null) { try { //if (typeof(T) == typeof(Currency)) { // value = Currency.ToCurrency(obj); //} ////FIXME //if (obj.GetType() == typeof(DateTime)) // obj = ((DateTime)obj).ToLocalTime(); if (typeof(T) == typeof(DateOnly)) { obj = DateOnly.ToDateOnly(obj); } if (obj is T _value) { value = _value; } else { obj = Convert.ChangeType(obj, typeof(T)); value = (T)obj; } return(true); } catch (Exception exc) { //Debug.ExceptionCaught(exc); Debug.Print("Exception caught in AirRecord.GetField(): fieldName={0}, obj={1}: {2}", fieldName, obj, exc); } } value = defaultValue; return(false); }