.netinternalsvisibleto

Are There Any Non-UnitTesting Scenarios Where InternalsVisibleTo is Acceptable


It seems like using this attribute for anything other than unit testing of non-public methods/properties would be a huge code smell. Are there any legitimate uses of the InternalsVisibleTo attribute to achieve something that might be otherwise impossible/too cumbersome using standard design patterns?


Solution

  • We used it in building the Microsoft Surface SDK so that certain platform assemblies could talk to each other without opening up unwanted public APIs. Though this did create a burden of having manually ensure that these libs were only using "approved" internal things from each other.