This is a classic issue. From MSDN:
The C# keywords
protectedandinternalhave no meaning in IL and are not used in the Reflection APIs. The corresponding terms in IL areFamilyandAssembly. To identify aninternalmethod using Reflection, use theIsAssemblyproperty. To identify aprotected internalmethod, use theIsFamilyOrAssembly.
Reflection does not expose a way on Type check if it is internal, protected or protected internal.