referencia - ¿Qué es una clase interna sellada en C#?
nuevo miembro protegido declarado en clase sellada (5)
Es una clase que:
-
internal
: solo se puede acceder desde el conjunto que se define (o conjuntos de amigos). -
sealed
: no puede ser heredado
Marcar las clases como internal
es una forma de evitar que los usuarios externos de un conjunto las usen. Realmente es una forma de encapsulación de diseño y, en mi humilde opinión, es una buena práctica marcar los tipos que no forman parte de los modelos de API / objeto público intencionados como internal
. A largo plazo, esto evita que los usuarios de su biblioteca se unan a tipos que usted no pretendía. Este tipo de acoplamiento no deseado perjudica su capacidad de cambiar y evolucionar la forma en que se implementan sus bibliotecas, ya que no puede cambiarlas sin afectar a sus clientes. El uso de ayudas internal
para mantener la superficie pública y utilizable de una biblioteca en lo que se pretende.
Marcar las clases como sealed
evita que estas clases sean heredadas. Este es un intento de diseño bastante drástico que a veces es útil si una clase ya está tan especializada que es sensato que no se le deba agregar ninguna otra funcionalidad por herencia directamente ni por medio de la anulación de su comportamiento.
internal
tipos de modificación internal
y sealed
formas bastante diferentes, pero se pueden usar juntos.
Nota : tiene un control de alcance internal
adicional, ya que puede definir un conjunto de otros conjuntos como ''amigos''. Estas asambleas de amigos pueden acceder a sus tipos internal
. Esto puede ser útil para definir conjuntos de conjuntos que cooperan, como los conjuntos de producción y de prueba. A menudo es deseable que un ensamblaje de prueba pueda ver todos los tipos en el ensamblaje que está probando.
Estaba mirando a través de un código C # para extender el soporte de idioma en VS2010 (ejemplo de Ook). Vi algunas clases llamadas internal sealed class
¿Qué hacen estos? ¿Uno los usaría?
Gracias
Interno significa que el miembro es accesible para otros tipos que están definidos en el mismo ensamblaje. Una clase sellada es una especie de oposición de abstracto. Puede ser instanciado pero no puede servir como una clase base. La razón principal para sellar una clase es evitar que sus usuarios jueguen con ella y la rompan. También es cierto que el sellado de una clase permite ciertas optimizaciones del compilador que no son posibles con clases no selladas.
Una clase internal sealed
es aquella que es:
internal
- Solo accesible desde el mismo ensamblaje
sealed
- No puede ser subclasificado
En otras palabras, no hay forma de que lo uses directamente.
Internal significa que solo se puede usar en el mismo ensamblaje,
La palabra clave interna es un modificador de acceso para tipos y miembros de tipo. Los tipos internos o miembros son accesibles solo dentro de los archivos en el mismo ensamblaje
sealed que no puede ser heredado
Una clase sellada no puede ser heredada. Es un error utilizar una clase sellada como clase base. Utilice el modificador sellado en una declaración de clase para evitar la herencia de la clase.
interno: una clase a la que solo se puede acceder dentro del mismo ensamblaje.
Assembly1.dll:
namespace test { internal class InternalClass { } public class PublicClass { } }
Assembly2.dll:
using test; ... InternalClass c1; // Error PublicClass c2; // OK
sellado: una clase que no puede ser derivada de
sealed class SealedClass { ... } class ChildClass : SealedClass {} //ERROR