Pregunta

¿Cuál es el equivalente de una palabra clave 'amigo' en C Sharp?

¿Cómo uso la palabra clave 'interna'?

He leído que la palabra clave 'interna' es un reemplazo para 'amigo' en C #.

Estoy usando una DLL en mi proyecto C # para el que tengo el código fuente y, sin embargo, no quiero modificar el código existente. He heredado la clase y puedo usar mi clase heredada de la forma que quiera. El problema es que la mayoría del código en la clase principal tiene métodos protegidos. ¿Usar un amigo de alguna manera permitirá acceder o llamar a estos métodos protegidos?

¿Fue útil?

Solución

  1. Puede usar el modificador de acceso de palabra clave internal para declarar un tipo o miembro de tipo accesible solo para el código en el mismo ensamblado.

  2. Puede usar el InternalsVisibleToAttribute clase definida en System.Rutime.CompilerServices para declarar un tipo como accesible para el código en el mismo ensamblaje o solo en un ensamblado especificado.

Utiliza el primero como cualquier otro modificador de acceso como como privado . A saber:

internal class MyClass {
    ...
}

Utiliza el segundo de la siguiente manera:

[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")]
internal class MyVisibleClass {
    ...
}

Ambos pueden ser considerados el equivalente de friend en C #.

Los métodos que están protegido están ya disponible para clases derivadas.

Otros consejos

No, "interno" no es lo mismo que "amigo" (al menos el 'amigo' de C ++)

amigo especifica que solo una clase en particular puede acceder a esta clase.
interno especifica que CUALQUIER clase en el ensamblado puede acceder a esta clase.

1) Interno es el equivalente de C # de la palabra clave 'amigo' de VB.NET, como lo ha adivinado (en lugar de un reemplazo)

2) El uso es el siguiente

internal void Function() {}
internal Class Classname() {}
internal int myInt;
internal int MyProperty { get; set; }

3) Básicamente, es un modificador de acceso que estipula que la accesibilidad de la clase / función / variable / propiedad marcada como interna es como si fuera pública para la Asamblea en la que se compila, y privada para cualquier otra asamblea

Su subclase podrá acceder a los miembros protegidos de la clase que hereda.

¿Está buscando dar acceso a estos miembros protegidos a otra clase?

Interno es el equivalente de amigo. Un método protegido solo está disponible dentro de la misma clase o de un heredero. Si está tratando de exponer métodos protegidos de un heredero, puede envolverlos en métodos públicos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top