Example #1
0
        public static bool HasCompatibleTypes <TOtherTypePair>(
            this ITypePair typePair,
            TOtherTypePair otherTypePair,
            IQualifiedMember sourceMember = null,
            QualifiedMember targetMember  = null)
            where TOtherTypePair : ITypePair
        {
            var sourceTypesMatch =
                typePair.IsForSourceType(otherTypePair.SourceType) ||
                (sourceMember?.HasCompatibleType(typePair.SourceType) == true);

            if (!sourceTypesMatch)
            {
                return(false);
            }

            var targetTypesMatch =
                (targetMember?.HasCompatibleType(typePair.TargetType) == true) ||
                otherTypePair.TargetType.IsAssignableTo(typePair.TargetType);

            return(targetTypesMatch);
        }