Exemple #1
0
        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");
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
		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;
			}
		}