One of the few libraries that are available with you that I must consider is the classes within ComponentModel namespace. In this post, I will give you a component demonstration of how you could use Descriptor types to get information about Properties, Attributes, Events, etc. I row you could use the code later while building your library. TypeDescriptor is a real sealed class which makes the starting point of the API.
It its information of the object in terms of Descriptors, Attributes, Events, etc..
Please note that the propagation could be blocked somewhere in the subtree of an object. Just deactivate the Inherit permissions from parent objects option. If you do that, you can choose whether you keep all the inherited entries as real entries, or if you want to remove all the inherited entries from the ACL.