public static bool _ <T>(this go.main_package.I target, out T result) { try { result = target._ <T>(); return(true); } catch (PanicException) { result = default !;
public static T _ <T>(this go.main_package.I target) { try { return(((go.main_package.I <T>)target).Target); } catch (NotImplementedException ex) { throw new PanicException($"interface conversion: {GetGoTypeName(target.GetType())} is not {GetGoTypeName(typeof(T))}: missing method {ex.InnerException?.Message}"); } }
public static T TypeAssert <T>(this go.main_package.I target) { try { return(((go.main_package.I <T>)target).Target); } catch (NotImplementedException ex) { throw new PanicException($"panic: interface conversion: {target.GetType().FullName} is not {typeof(T).FullName}: missing method {ex.InnerException?.Message}"); } }
public static bool TryTypeAssert(this go.main_package.I target, Type type, out object result) { try { result = target.TypeAssert(type); return(true); } catch (PanicException) { result = type.IsValueType ? Activator.CreateInstance(type) : null; return(false); } }
public static bool TryTypeAssert <T>(this go.main_package.I target, out T result) { try { result = target.TypeAssert <T>(); return(true); } catch (PanicException) { result = default(T); return(false); } }
public static object TypeAssert(this go.main_package.I target, Type type) { try { MethodInfo conversionOperator = s_conversionOperators.GetOrAdd(type, _ => typeof(go.main_package.I <>).GetExplicitGenericConversionOperator(type)); if ((object)conversionOperator == null) { throw new PanicException($"panic: interface conversion: {target.GetType().FullName} is not {type.FullName}"); } return(conversionOperator.Invoke(null, new object[] { target })); } catch (NotImplementedException ex) { throw new PanicException($"panic: interface conversion: {target.GetType().FullName} is not {type.FullName}: missing method {ex.InnerException?.Message}"); } }