private static bool CanCastToInterface(this TypeDesc thisType, TypeDesc otherType, StackOverflowProtect protect) { if (!otherType.HasVariance) { return(thisType.CanCastToNonVariantInterface(otherType, protect)); } else { if (thisType.CanCastByVarianceToInterfaceOrDelegate(otherType, protect)) { return(true); } foreach (var interfaceType in thisType.RuntimeInterfaces) { if (interfaceType.CanCastByVarianceToInterfaceOrDelegate(otherType, protect)) { return(true); } } } return(false); }