Comportamento Classe dopo chiamata al metodo Dispose

di il
2 risposte

Comportamento Classe dopo chiamata al metodo Dispose

Buongiorno. Come da oggetto, scrivendo una classe che implementa l'interfaccia IDisposable, dite che sia consigliabile inserire nel corpo di ogni suo membro (proprietà o metodo), la verifica che l'istanza non sia stata scaricata, ed in caso contrario sollevare un'eccezione di tipo ObjectDisposedException?
Certo è una bella rottura dover inserire manualmente questa verifica in ogni membro della classe; senza contare il (piccolo) overhead creato.

2 Risposte

  • Re: Comportamento Classe dopo chiamata al metodo Dispose

    Non ha senso.
    Si suppone che il codice sia scritto in modo ""corretto"" e "IDisposable"" serve solo per assicurarsi che eventuali risorse allocate e non deallocate corretamente vengano COMUNQUE deallocate.
    Per fare un esempio: supponi che la classe richieda l'accesso ad un file che dovresti chiude, in IDisposable controlli che il file sia stato effettivamente chiuso altrimenti ne forzi la chiusura.

    ALTRIMENTI

    dovresti fare TUTTI I possibili controlli NON solo legati a IDisposable, ma ANCHE a tutti i parametri passati ad ogni metodo.
    Certi controlli hanno senso (passi il nome di un file che non esiste) ma altri potrebbero essere inutili.

    In pratica, devi ""calibrare"" quali test fare con la loro ""utilita' " e l'impatto che avrebbero sull'applicazione.

    Altro banale esempio: tu sai che "0/0" non e' definito e la divisione genera un "NaN", TEORICAMENTE PRIMA di ogni divisione dovresti controllare se i numeri da dividere sono diversi da 0.
    Se introducci questo test in un algoritmo di calcolo numerico che fa MILIARDI di operazioni,

    ... ""non te passa piu' """



    COMUNQUE, NON ESISTE una regola univoca!

    Devi valutare di volta in vola.

    Ultimo esempio: SE la tua classe rappresenta un conto corrente, e il metodo una transazione bancaria, dovresti fare TUTTI I TEST POSSIBILI affiche' tutto quello che serve per fare una transazione bancaria corretta SIA ""STRA-CONTROLLATO"".
    Non puoi permetterti di prelevare PIU' di quanto richiesto (sara' contento chi preleva ma non tanto da chi e' stato prelevato) NE depositare meno di quanto indicato (sai che divertimento, depositi 10.000 euro e sul tuo conto ne vengono accreditati solo 1000. Che vuoi che sia uno ZERO! Vale ZERO! )...
  • Re: Comportamento Classe dopo chiamata al metodo Dispose

    OK, grazie della spiegazione molto chiara; ho capito che in effetti questi controlli eccedono lo scopo dell'interfaccia IDisposable.
Devi accedere o registrarti per scrivere nel forum
2 risposte