コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        private bool CheckVisibility(object[] attributes, bool isPublic)
        {
            MoonSharpVisibleAttribute va = attributes.OfType <MoonSharpVisibleAttribute>().SingleOrDefault();

            if (va != null)
            {
                return(va.Visible);
            }
            else
            {
                return(isPublic);
            }
        }
コード例 #3
0
        /// <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);
            }
        }