Sfondo
Devo chiamare un metodo che deve restituire un intero con segno (vedi il blocco di codice sotto) dopo la conversione da un intero non firmato . La ragione di questo è che devo fare matematica di bit-saggio che si basa sul valore che inizia come un intero senza segno.
Stavo pensando di fare il try / catch con il controllo del metodo che MSDN descrive qui . Il mio unico problema con questo metodo è che, mentre voglio gestire l'eccezione in modo appropriato ... Non è possibile prevedere quali significati potrebbero avere i numeri per il chiamante. Ciò che intendo è che chiunque chiami GetMode
utilizzerà il valore per cercare un string
che fornisce un ulteriore significato di ciò che significa il modo in realtà.
mode = object.GetMode(3);
Dove GetMode
è definito come segue.
public int GetMode(int index)
{
UInt32 modeUint = 0;
int modeInt = 0;
// extract the number from the array
modeUint = this.myArray[index];
// convert to a signed integer
modeInt = Convert.ToInt32(modeUint);
return modeInt;
}
La struttura della classe
La classe è strutturata nel modo seguente:
I campi:
- myArray
- MyDictionary
- modeIndex = 3
Metodi di costruzione:
- Voce ()
- Voce (dati UInt32)
Metodi di accesso pubblici:
- int GetMode (int index)
- int GetModeDescription
Quindi il modo in cui questa classe funziona, è ...
- La classe è costruita con una serie di dati.
- La classe crea
myArray
come copia esatta dei dati con cui è stata costruita la classe. - La classe costruisce un dizionario da un file XML molto grande, che contiene i significati delle varie modalità (s).
- La classe sarà quindi accessibile da un estraneo, chiedendo informazioni sulla modalità (s).
- Se viene chiamato
GetMode
, verrà restituito il numero di modalità (dopo essere stato estratto da una posizione fissa inmyArray
. - Se viene chiamato
GetModeDescription
, verrà utilizzato il primoGetMode
per ottenere il numero associato alla modalità. Questo numero sarà a sua volta utilizzato come chiave per cercare un valore dal dizionario al fine di ottenere la descrizione della stringa appropriata.
Domanda
Voglio evitare che utilizzi male una delle modalità (ad esempio, rilevi l'eccezione, restituisci 0). Quindi stavo pensando di fare una delle seguenti azioni:
- Non fare nulla sull'eccezione, l'utente ha violato il mio contratto ed è colpa loro.
- Rileva l'eccezione e la rilancia con il messaggio originale più alcune informazioni aggiuntive su come il numero restituito non è valido.
- Basta ripetere l'eccezione.
Uno di questi è accettabile o esiste un altro modo?