Ho una classe base che contiene alcuni elenchi, code e altri campi che determinano il suo stato. Nella classe base accedo solo a questi campi all'interno di un oggetto lock protetto poiché potrebbero esserci più thread che lo utilizzano. Fornisco metodi per gli eredi di questa classe base e questi metodi usano l'oggetto lock per garantire che lo stato rimanga valido. (In altre parole, le classi che ereditano dalla base accedono ai metodi piuttosto che ai singoli campi in modo che non abbiano bisogno di sapere / ricordare di usare l'oggetto lock). Quindi la mia inclinazione è di rendere privato l'oggetto e i campi di blocco, quindi non ho mai bisogno di preoccuparmi degli eredi che li usano erroneamente. Lo svantaggio di questo approccio è che ogni volta che si ereditano le classi hanno bisogno di nuove funzionalità con questi campi, ho bisogno di modificare la classe base per creare un nuovo metodo.
C'è una buona pratica che mi manca? In caso contrario, qual è l'opzione migliore, blocco e campi privati o protetti?