Me pregunto si hay una manera de limitar quién puede heredar de una clase.¿Hay alguna manera de limitar quién puede heredar una clase o interfaz?
internal
: no permite que la clase que se hereda el exterior del conjuntosealed
: clase no puede ser heredada
¿Hay una palabra clave o una manera de permitir que sólo ciertas clases (digamos desde su propio espacio de nombres) para heredar esa clase?
Además, no quiero que esta clase especial sea genérica. Mi preocupación no es la seguridad sino el diseño en general.
ejemplo de lo que quiero:
- Clase A.
- clase B hereda de una
- Clase C no puede heredar de una
Hacer una clase interna no solo evita que hereden las clases externas, sino que también las usen.Para evitar clases de niños externas, se necesitan trucos especiales, como los métodos 'abstractos ', y eso no funciona en las interfaces. – CodesInChaos
¿Qué tipo de límite te gustaría? ¿Has echado un vistazo a la demanda de herencia? http://palisade.plynt.com/issues/2006Apr/link-demand/ –
Tenga en cuenta que restringir a un espacio de nombres no es mucha protección, ya que un ensamblado pícaro podría decir 'namespace Awesome {public class Stolen: Secret { }} 'y ahora pueden usar' Awesome.Stolen' para acceder a 'Awesome.Secret'. –