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