Ciò è possibile in C# in qualche modo? Questo è il caso esatto di cui ho bisogno per: Lui (l'utente) non deve essere in grado di creare istanze di questa classe. Tuttavia, voglio essere in grado di creare istanze di questa classe all'interno del mio progetto. (quindi: internamente) Altre classi dovrebbero essere in grado di ereditarlo. Voglio forzare l'utente a usare solo la classe Sound più grande. Il grande "BUT": l'utente deve essere in grado di utilizzare le istanze di questa classe se glielo diamo, ecco perché non posso semplicemente renderlo interno e averne a che fare. Nemmeno posso renderlo astratto, perché voglio fare delle copie io stesso. Ho pensato di fornire all'utente solo interfacce come IChannel, ma questo non risolve il mio problema che non dovrebbe essere in grado di creare un'istanza di Channel. Sarà ancora in grado di vedere la classe se la cerca, e se è abbastanza avido cerca di creare un'istanza. Ma come ho detto prima: non riesco a renderlo astratto perché ho bisogno di fare copie internamente.Come creare una classe che sia astratta, ma non internamente
Apprezzo il tuo aiuto!
Grazie! La cosa buona è stata chiesta, perché ci ho pensato un po 'di più, e il metodo dell'interfaccia avrebbe funzionato se l'interfaccia fosse pubblica, e il Canale stesso interno credo. Ma sarebbe stato brutto :) (interfaccia aggiuntiva che nessuno ha bisogno o vuole) – Blub
Non sono d'accordo; se stavo testando il codice che faceva affidamento sulla tua classe, avrei sicuramente bisogno di un'interfaccia, in quanto le interfacce possono essere facilmente eliminate durante il test dell'unità. Un'altra cosa carina con un'interfaccia è che espone solo le funzionalità rilevanti per l'uso pubblico della tua classe, che potrebbe essere un sottoinsieme dei metodi pubblici che usi internamente alla classe. –
Ho finito per creare un'interfaccia, perché come una classe astratta Channel ha ereditato altri costruttori che non avevo preso in considerazione prima. Non volevo la zavorra aggiunta, e per altri motivi è andata alla perfezione. A volte sei semplicemente fortunato :) (ad esempio: altre classi forniscono l'effettiva implementazione per IChannel, che sarà interna. Questo è perfetto dato che non puoi creare un'istanza di un'interfaccia) – Blub