La palabra clave interna en C# puede hacer que los métodos, campos o atributos marcados solo estén disponibles dentro del ensamblador actual, ¿qué pasa si otros ensamblajes necesitan usar este método interno? .NET proporciona una forma de realizar esta función similar a la clase friend en C++, que es usar InternalsVisibleTo.
Esto es común al hacer pruebas, y se necesita otro proyecto para probar la funcionalidad marcada por el método interno en el proyecto, así que con InternalsVisibleTo, no tenemos que cambiar un método que no debería ser público a público para poder hacer pruebas unitarias.
Todavía hay algunas cosas a las que prestar atención al usar InternalsVisibleTo, especialmente que PublicKey no es fácil de entender, hablemos de cómo usar este InternalsVisibleTo:
Primero expliquemos la premisa: el Proyecto1 es un proyecto funcional, y el Proyecto1.Test (nombre del ensamblaje: Project1.Test.dll) es un proyecto de prueba para el Proyecto 1.
1. Abre el archivo Assembly.cs de Project1 y añade esta frase al final del archivo:
PublicKey=****** debería reemplazarse por la clave pública Project1.Test.dll, para saber cómo obtener la PublicKey, consulta la sección de Notas al final del artículo.
2. Verifica ese espacio de nombres: System.Runtime.CompilerServices se añade a la referencia de espacio de nombres del Assembly.cs, ya que InternalsVisibleTo se encuentra en el espacio de nombres System.Runtime.CompilerService.
Notes:
1. ¿Cómo consigo una PublicKey?
R: En la línea de comandos, usa sn -tp Project1.Test.dll para ver PublicKey y PublicKeyToken
2. Si Project1 es un proyecto con nombre fuerte, entonces InternalsVisibleTo debe especificar una ClavePública, por lo que Project1.Test también debe usar una firma fuerte para usar correctamente InternalsVisibleTo, de lo contrario la compilación cometerá un error si Project1 no usa una firma fuerte, Entonces Project1.Test no necesita usar firmas fuertes, y al usar InternalsVisibleTo, solo se requiere el nombre del ensamblador, y no es necesario establecer la PuklicKey. |