¿Se puede proteger una clase en .NET?
¿Por qué/no es esto posible?Clases protegidas en .NET
Respuesta
Sí, puede simplemente no los hacen clases de nivel superior, tienen que ser las clases internas
public class Outer
{
protected class Foo
{
}
}
Esto está bien, significa que las únicas clases les permite ver Foo son subclases de exterior
class X
{
// 'Outer.Foo' is inaccessible due to its protection level
private void Flibble(Outer.Foo foo)
{
}
}
class X : Outer
{
// fine
private void Flibble(Outer.Foo foo)
{
}
}
Tenga en cuenta que no puede declarar ninguna clase externa como privada, protegida (o protegida interna) en C#, ya que el modificador de acceso para las clases de nivel externo define su visibilidad en relación con otros conjuntos. Específicamente visible solo en el ensamblaje (o para amigos a través de InternalsVisibleTo) o fuera del ensamblaje.
Por lo tanto, mientras que los identificadores públicos/internos se utilizan aquí para la consistencia realmente el estado en IL es simplemente 'Público' o 'no pública' (como la Reflection.Emit flags show)
protected
visibilidad se utiliza para indicar 'visible para las clases derivadas '. Esto tiene sentido en las cosas dentro de una clase, pero normalmente no tiene ningún significado en el nivel de clase.
La única excepción a esto es una clase interna, donde la visibilidad protegida significa que las clases derivadas tendrán acceso a la clase interna.
Sí, no podemos convertirlas en clases de nivel superior, deben ser clases internas
- 1. Clases de C++ (públicas, privadas y protegidas)
- 2. Funciones protegidas en Scala
- 3. Variables miembro estáticas protegidas
- 4. Propiedades internas protegidas vs Propiedades protegidas y Resharper
- 5. ¿Número de clases en .NET?
- 6. variables privadas o protegidas?
- 7. ¿Están protegidas las UI?
- 8. .NET XmlSerializer y clases anidadas en C#
- 9. Encriptación OpenSSL usando clases .NET
- 10. Solución para lograr propiedades protegidas en Objective-C
- 11. Simulacros de clases .NET que utilizan clases contenedoras
- 12. métodos de interfaz no puede haber protegidas
- 13. Accediendo a las variables protegidas padre
- 14. ¿Cómo descargar imágenes protegidas de Hotlink?
- 15. Biblioteca de clases portátil y .NET ConcurrentDictionary
- 16. .NET clases parciales frente a la herencia
- 17. Conjuntos vs bibliotecas de clases (.NET)
- 18. .net Herencia múltiple de las clases abstractas
- 19. Clases .NET y su código fuente
- 20. no puede llamar a funciones protegidas de clase base?
- 21. clases de decisiones públicas a otras clases en C++
- 22. Diferencias prácticas entre clases y estructuras en .net (no conceptual)?
- 23. Buscar clases no utilizadas en un proyecto .net
- 24. ¿Disminuir el número de clases públicas en mi aplicación .NET?
- 25. Codificación Html en la biblioteca de clases .NET
- 26. En Protobuf-net, ¿es posible serializar clases no decoradas?
- 27. Cómo diferenciar las clases generadas por el compilador de las clases de usuario en .NET
- 28. Constantes de clase PHP: ¿públicas, privadas o protegidas?
- 29. ¿Cómo obtener un buen diagrama de clases para clases incorporadas de .net?
- 30. ¿Hay alguna razón para no usar las propiedades 'protegidas'?
+1 claridad de ejemplo. –