Example #1
0
        private bool IsValidExtensionType(IType actualType, IType extensionType, IExtensionEnabled extension)
        {
            if (TypeCompatibilityRules.IsAssignableFrom(extensionType, actualType))
            {
                return(true);
            }

            // Check for a valid generic extension
            IMethod method = extension as IMethod;

            if (method == null || method.GenericInfo == null)
            {
                return(false);
            }

            System.Collections.Generic.List <IGenericParameter> genericParameters = new System.Collections.Generic.List <IGenericParameter>(GenericsServices.FindGenericParameters(extensionType));
            if (genericParameters.Count == 0)
            {
                return(false);
            }

            TypeInferrer inferrer = new TypeInferrer(genericParameters);

            inferrer.Infer(extensionType, actualType);
            return(inferrer.FinalizeInference());
        }
Example #2
0
 bool IsGenericityTheSame(TypeMember lhs, TypeMember rhs)
 {
     IGenericParameter[] lgp = GenericsServices.GetGenericParameters(lhs.Entity);
     IGenericParameter[] rgp = GenericsServices.GetGenericParameters(rhs.Entity);
     return(lgp == rgp || (null != lgp && null != rgp && lgp.Length == rgp.Length));
 }