Detect access modifier type on a property using Reflection
Since properties are just syntactic sugar over a pair of get
/set
methods, there's no such thing as "accessibility" of a property reflection-wise. Rather, you'll have to find out accessibility levels of get
and set
methods separately. To that end, retrieve appropriate MethodInfo
objects with GetGetMethod
and GetSetMethod
methods, and from there are various IsPrivate
, IsPublic
and other methods and properties.
You need to look at the methodInfo of each get & set method eg :
PropertyInfo pi = ...;
bool isPublic = pi.GetGetMethod(true).IsPublic;
bool isProtected= pi.GetGetMethod(true).IsFamily;
It seems to be the IsFamily property that indicates if a method is protected..