Search code examples
.netassembliesaccess-modifiersinternalsvisibleto

When should [assembly: InternalsVisibleTo()] be used?


I understand that the InternalVisibleTo attribute is used to expose types and methods with the internal access modifier to a specified assembly. I have only ever used this for exposing internal methods to a separate assembly containing a suite of unit tests.

I am struggling to think of another scenario when this should be used. Was this attribute introduced specifically to aid unit testing or was there another reason?


Solution

  • A scenario can be that you have separation of logic between assemblies (like internal data objects and the logic layer). You don't want to expose the classes to your users, but you still want to use the objects in your own assemblies.

    I think this is not a very common scenario, I hardly ever use InternalsVisibleTo in non unit tests context.