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)); }
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); }