Ejemplo n.º 1
0
 public static AccessLevelModifiers GetAccessModifiers(this PropertyInfo property)
 {
     if (property.CanRead && property.CanWrite)
     {
         AccessLevelModifiers read  = property.GetGetMethod(true).GetAccessModifiers();
         AccessLevelModifiers write = property.GetGetMethod(true).GetAccessModifiers();
         if (read.CompareTo(write) < 0)
         {
             return(write);
         }
         else //If they're equal it doesn't matter; if write is lower than read, then use read's
              //because the accessability of the property is always the highest of the two.
         {
             return(read);
         }
     }
     else if (property.CanRead)
     {
         return(property.GetGetMethod(true).GetAccessModifiers());
     }
     else if (property.CanWrite)
     {
         return(property.GetSetMethod(true).GetAccessModifiers());
     }
     else
     {
         return(AccessLevelModifiers.Private);
     }
 }
Ejemplo n.º 2
0
        internal static AccessLevelModifiers ObtainAccessLevelModifiers(this IEnumerable <ICliMetadataMethodDefinitionTableRow> methods)
        {
            AccessLevelModifiers resultModifiers = AccessLevelModifiers.PrivateScope;

            foreach (var method in methods)
            {
                AccessLevelModifiers currentModifiers;
                switch (method.UsageDetails.Accessibility)
                {
                case MethodMemberAccessibility.Private:
                    currentModifiers = AccessLevelModifiers.Private;
                    break;

                case MethodMemberAccessibility.FamilyAndAssembly:
                    currentModifiers = AccessLevelModifiers.ProtectedAndInternal;
                    break;

                case MethodMemberAccessibility.Assembly:
                    currentModifiers = AccessLevelModifiers.Internal;
                    break;

                case MethodMemberAccessibility.Family:
                    currentModifiers = AccessLevelModifiers.Protected;
                    break;

                case MethodMemberAccessibility.FamilyOrAssembly:
                    currentModifiers = AccessLevelModifiers.ProtectedOrInternal;
                    break;

                case MethodMemberAccessibility.Public:
                    currentModifiers = AccessLevelModifiers.Public;
                    break;

                default:
                    currentModifiers = AccessLevelModifiers.PrivateScope;
                    break;
                }
                if (resultModifiers.CompareTo(currentModifiers) < 0)
                {
                    resultModifiers = currentModifiers;
                }
            }
            return(resultModifiers);
        }