Quando si crea una libreria, è necessario assicurarsi che i metodi privati debbano funzionare come previsto quando non vengono chiamati da altri metodi della stessa classe, ma da un'altra libreria tramite la riflessione ?
Ad esempio, se un metodo privato private DoSomething(int number)
prevede che:
number
è un numero intero diverso da zero positivo e:- una variabile privata
string abc
non è nulla e non è una stringa vuota,
e completamente, brutto fallisce se queste due condizioni non sono abbinati, devo gestire tali fallimenti anche se so che tutti i metodi della classe saranno always¹ assegnare un valore non vuoto per abc
prima di chiamare DoSomething
, e passare un diverso da zero intero positivo a questo metodo?
In altre parole, il codice che non è protetto dalle chiamate non sicure attraverso la reflection può essere considerato come un codice di bassa qualità o appartiene al chiamante che utilizza la reflection per garantire che la chiamata non interrompa nulla?
Nota: la mia domanda copre solo un set standard di librerie. Questo non copre il codice che deve essere altamente sicuro (cioè quando qualcuno potrebbe essere interessato usando la riflessione per far sì che si comporti in modo imprevisto o si blocchi).
¹ Perché la classe è documentata correttamente, perché ci sono abbastanza test unitari per essere sicuri che nessun altro sviluppatore non infrange questo metodo, ecc.