Mi chiedo se esiste un modo per limitare chi può ereditare da una classe.C'è un modo per limitare chi può ereditare una classe o un'interfaccia?
internal
: non permette di classe per essere ereditata al di fuori del gruppo disealed
: classe non può essere ereditata
C'è una parola chiave o un modo per consentire solo alcune classi (diciamo che da esso è proprio spazio dei nomi) per ereditare quella classe?
Inoltre, non voglio che questa classe speciale sia generica. La mia preoccupazione non è la sicurezza ma il design in generale.
Esempio di ciò che voglio:
- classe A.
- classe B eredita da A
- Classe C non può ereditare da una
Rendere una classe interna non solo impedisce alle classi esterne di ereditare, ma anche di usarla.Per prevenire solo i childclass esterni sono necessari trucchi speciali, come i metodi 'internal abstract', e questo non funziona sulle interfacce. – CodesInChaos
Che tipo di limite vorresti? Hai dato un'occhiata a InheritanceDemand? http://palisade.plynt.com/issues/2006Apr/link-demand/ –
Nota che limitare a uno spazio dei nomi non è affatto una protezione, dal momento che un assembly canaglia potrebbe semplicemente dire 'namespace Awesome {public class Stolen: Secret { }} 'e ora possono usare' Awesome.Stolen' per accedere a 'Awesome.Secret'. –