/// <summary> /// Determines whether a /// <see cref="MoonSharpVisibleAttribute" /> or a <see cref="MoonSharpHiddenAttribute" /> is changing visibility of a member /// to scripts. /// </summary> /// <param name="mi">The member to check.</param> /// <returns> /// <c>true</c> if visibility is forced visible, /// <c>false</c> if visibility is forced hidden or the specified MemberInfo is null, /// <c>if no attribute was found</c> /// </returns> /// <exception cref="System.InvalidOperationException">If both MoonSharpHiddenAttribute and MoonSharpVisibleAttribute are specified and they convey different messages.</exception> public static bool?GetVisibilityFromAttributes(this MemberInfo mi) { if (mi == null) { return(false); } MoonSharpVisibleAttribute va = mi.GetCustomAttributes(true).OfType <MoonSharpVisibleAttribute>().SingleOrDefault(); MoonSharpHiddenAttribute ha = mi.GetCustomAttributes(true).OfType <MoonSharpHiddenAttribute>().SingleOrDefault(); if (va != null && ha != null && va.Visible) { throw new InvalidOperationException(string.Format("A member ('{0}') can't have discording MoonSharpHiddenAttribute and MoonSharpVisibleAttribute.", mi.Name)); } else if (ha != null) { return(false); } else if (va != null) { return(va.Visible); } else { return(null); } }
private bool CheckVisibility(object[] attributes, bool isPublic) { MoonSharpVisibleAttribute va = attributes.OfType <MoonSharpVisibleAttribute>().SingleOrDefault(); if (va != null) { return(va.Visible); } else { return(isPublic); } }
/// <summary> /// Determines whether a /// <see cref="MoonSharpVisibleAttribute" /> is changing visibility of a member /// to scripts. /// </summary> /// <param name="mi">The member to check.</param> /// <returns> /// <c>true</c> if visibility is forced visible, /// <c>false</c> if visibility is forced hidden or the specified MemberInfo is null, /// <c>if no attribute was found</c> /// </returns> public static bool?GetVisibilityFromAttributes(this MemberInfo mi) { if (mi == null) { return(false); } MoonSharpVisibleAttribute va = mi.GetCustomAttributes(true).OfType <MoonSharpVisibleAttribute>().SingleOrDefault(); if (va != null) { return(va.Visible); } else { return(null); } }