private MethodInfo?GetExplictOverloadedOperator(Type sourceType, Type destType) { var methodBinder = new ExplicitOperatorMethodBinder(destType, sourceType); // Look for an operator on the source type and dest types var miSource = Utility.GetOverloadedOperator("Explicit", sourceType, methodBinder, sourceType); var miDest = Utility.GetOverloadedOperator("Explicit", destType, methodBinder, sourceType); if (miSource == null & miDest == null) { return(null); } if (miSource == null) { return(miDest); } if (miDest == null) { return(miSource); } throw CreateCompileException(CompileErrors.AmbiguousOverloadedOperator, CompileExceptionReason.AmbiguousMatch, sourceType.Name, destType.Name, "Explicit"); }
private MethodInfo GetExplictOverloadedOperator(Type sourceType, Type destType) { ExplicitOperatorMethodBinder binder = new ExplicitOperatorMethodBinder(destType, sourceType); // Look for an operator on the source type and dest types MethodInfo miSource = Utility.GetOverloadedOperator("Explicit", sourceType, binder, sourceType); MethodInfo miDest = Utility.GetOverloadedOperator("Explicit", destType, binder, sourceType); if (miSource == null & miDest == null) { return(null); } else if (miSource == null) { return(miDest); } else if (miDest == null) { return(miSource); } else { base.ThrowAmbiguousCallException(sourceType, destType, "Explicit"); return(null); } }
private MethodInfo GetExplictOverloadedOperator(Type sourceType, Type destType) { var binder = new ExplicitOperatorMethodBinder(destType, sourceType); // Look for an operator on the source type and dest types var miSource = Utility.GetOverloadedOperator("Explicit", sourceType, binder, sourceType); var miDest = Utility.GetOverloadedOperator("Explicit", destType, binder, sourceType); if (miSource == null & miDest == null) { return null; } else if (miSource == null) { return miDest; } else if (miDest == null) { return miSource; } else { base.ThrowAmbiguousCallException(sourceType, destType, "Explicit"); return null; } }