Boo.Lang.Compiler.TypeSystem.TypeSystemServices.GetMostGenericType C# (CSharp) Метод

GetMostGenericType() публичный Метод

public GetMostGenericType ( IType current, IType candidate ) : IType
current IType
candidate IType
Результат IType
        public IType GetMostGenericType(IType current, IType candidate)
        {
            if (null == current && null == candidate)
                throw new ArgumentNullException("current", "Both 'current' and 'candidate' are null");

            if (null == current)
                return candidate;

            if (null == candidate)
                return current;

            if (IsAssignableFrom(current, candidate))
                return current;

            if (IsAssignableFrom(candidate, current))
                return candidate;

            if (IsNumberOrBool(current) && IsNumberOrBool(candidate))
                return GetPromotedNumberType(current, candidate);

            if (IsCallableType(current) && IsCallableType(candidate))
                return ICallableType;

            if (current.IsClass && candidate.IsClass)
            {
                if (current == ObjectType || candidate == ObjectType)
                    return ObjectType;

                if (current.GetTypeDepth() < candidate.GetTypeDepth())
                    return GetMostGenericType(current.BaseType, candidate);

                return GetMostGenericType(current, candidate.BaseType);
            }
            return ObjectType;
        }

Same methods

TypeSystemServices::GetMostGenericType ( Boo.Lang.Compiler.Ast.ExpressionCollection args ) : IType
TypeSystemServices