Пример #1
0
        public static bool IsVisibleFrom(this Member member, TypeNode from)
        {
            var type = member as TypeNode;

            if (type != null)
            {
                return(type.IsVisibleFrom(from));
            }

            TypeNode declaringType = member.DeclaringType;

            if (from.IsContainedIn(declaringType))
            {
                return(true);
            }
            if (member.IsPublic)
            {
                return(declaringType.IsVisibleFrom(from));
            }
            if (member.IsFamily)
            {
                return(from.IsInheritedFrom(declaringType));
            }
            if (member.IsFamilyAndAssembly)
            {
                return(from.Module == declaringType.Module && from.IsInheritedFrom(declaringType));
            }
            if (member.IsFamilyOrAssembly)
            {
                if (from.IsInheritedFrom(declaringType))
                {
                    return(true);
                }
                if (from.Module == declaringType.Module)
                {
                    return(declaringType.IsVisibleFrom(from));
                }

                return(false);
            }

            return(member.IsAssembly && declaringType.Module == from.Module && declaringType.IsVisibleFrom(from));
        }
Пример #2
0
		public static bool IsVisibleFrom (this Member member, TypeNode from)
		{
			var type = member as TypeNode;
			if (type != null)
				return type.IsVisibleFrom (from);

			TypeNode declaringType = member.DeclaringType;
			if (from.IsContainedIn (declaringType))
				return true;
			if (member.IsPublic)
				return declaringType.IsVisibleFrom (from);
			if (member.IsFamily)
				return from.IsInheritedFrom (declaringType);
			if (member.IsFamilyAndAssembly)
				return from.Module == declaringType.Module && from.IsInheritedFrom (declaringType);
			if (member.IsFamilyOrAssembly) {
				if (from.IsInheritedFrom (declaringType))
					return true;
				if (from.Module == declaringType.Module)
					return declaringType.IsVisibleFrom (from);

				return false;
			}

			return member.IsAssembly && declaringType.Module == from.Module && declaringType.IsVisibleFrom (from);
		}