Introducción a la Asamblea Youyuan Sabemos que los miembros de una clase definidos como internos (incluyendo tipos, métodos, propiedades, variables, eventos) solo pueden ser accedidos en el mismo ensamblador (por supuesto, me refiero a la forma normal aquí, sin incluir el acceso por reflexión). Esta regla está en . .NET 2.0 está algo roto, lo que nos permite configurar los miembros internos de un ensamblador para que sean accedidos por miembros específicos. Llamamos al ensamblador que contiene estos miembros internos el ensamblador fuente, y el conjunto de ensambladores se llama ensamblador amigo.
Uso en ensamblaje de amigos Este atributo se utiliza a nivel de ensamblaje.
De este modo, después de que el programa FriendAssembly haga referencia al ensamblador, puede acceder a la propiedad interna Nombre. En términos generales, este assembly:InternalsVisibleTo("FriendAssembly") está mejor colocado en el AssemblyInfo.cs, al fin y al cabo, está a nivel de ensamblador.
Cuándo usar InternalsToVisibleTo De hecho, este atributo no se utiliza en aplicaciones generales, y no deberíamos abusar de este atributo. Porque, en general, un conjunto bien diseñado no necesita estar abierto al mundo exterior. Pero los escenarios de pruebas unitarias pueden aprovechar esta característica. Con esta función, podemos especificar que el código de las pruebas unitarias tiene acceso a esos miembros internos para poder hacer pruebas unitarias a esos miembros. Sin embargo, esto requiere escribir el nombre del ensamblador amigo muerto en el ensamblador fuente, lo que causa algunos problemas de seguridad. La seguridad puede garantizarse introduciendo ensamblajes de firmas.
InternalsToVisibleTo y el ensamblador de firma Puedes especificar directamente el nombre y la clave pública del ensamblaje meta amigo a InternalsVisibleTo. Utiliza la línea de comandos de desarrollador de VS para generar la clave pública de FriendAssembly:
Especifica el nombre del ensamblador amigo y la clave pública del ensamblador fuente:
De hecho, dado que el ensamblaje amigo hace referencia al ensamblador fuente, y el ensamblador con signo hace referencia a un ensamblador no firmado, y el ensamblador firmado no puede especificar un ensamblaje amigo sin signo, cualquiera de ellos está firmado, entonces deben estar firmados.
|