IKVM.Internal.MemberWrapper.IsAccessibleFrom C# (CSharp) Method

IsAccessibleFrom() private method

private IsAccessibleFrom ( TypeWrapper referencedType, TypeWrapper caller, TypeWrapper instance ) : bool
referencedType TypeWrapper
caller TypeWrapper
instance TypeWrapper
return bool
        internal bool IsAccessibleFrom(TypeWrapper referencedType, TypeWrapper caller, TypeWrapper instance)
        {
            if(referencedType.IsAccessibleFrom(caller))
            {
                return (
                    caller == DeclaringType ||
                    IsPublicOrProtectedMemberAccessible(caller, instance) ||
                    (IsInternal && DeclaringType.InternalsVisibleTo(caller)) ||
                    (!IsPrivate && DeclaringType.IsPackageAccessibleFrom(caller)))
                    // The JVM supports accessing members that have non-public types in their signature from another package,
                    // but the CLI doesn't. It would be nice if we worked around that by emitting extra accessors, but for now
                    // we'll simply disallow such access across assemblies (unless the appropriate InternalsVisibleToAttribute exists).
                    && ((flags & MemberFlags.NonPublicTypeInSignature) == 0 || InPracticeInternalsVisibleTo(caller));
            }
            return false;
        }