Sfondo:
Ho un file CSV, che devo preparare e convalidare ogni elemento in ogni riga e creare una raccolta di una classe, con dati validi.
vale a dire Il file CSV ha il seguente aspetto:
EmpID,FirstName,LastName,Salary
1,James,Help,100000
2,Jane,Scott,1000
3,Mary,Fraze,10000
La classe ha il seguente aspetto:
public class Employees
{
public int EmpID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Salary { get; set; }
public string ErrorReason { get; set; }
}
Ecco le convalide richieste per ciascun campo:
-
EmpID:
- È un campo obbligatorio, quindi non può essere nullo o vuoto
- Dovrebbe essere solo un numero intero
- Dovrebbe essere non più di 2 cifre
- Dovrebbe essere presente nel database (interrogare quel database e verificare se un dipendente esce con questo empid.
-
FirstName (stessa validazione per LastName):
- È un campo obbligatorio, quindi non può essere nullo o vuoto
- Dovrebbero essere solo alfabeti.
- Non sono ammessi più di 30 caratteri
-
Stipendio:
- È un campo obbligatorio, quindi non può essere nullo o vuoto
- Dovrebbe essere un decimale.
Per raggiungere questo obiettivo, ecco il mio approccio:
- Leggi il file CSV riga per riga
- Per ciascun elemento, EmpId, FirstName ... etc effettua le convalide richieste chiamando i singoli metodi con logica di convalida. per esempio: public bool ValidateIsDecimal (valore stringa) {} public bool ValidateIsEmpIdExists (valore stringa) {} etc
- Se valido, inserisci la proprietà corrispondente della classe "Dipendenti".
- Se NON VALIDO, riempire la proprietà "ErrorReason", con il motivo appropriato per ciò che ha causato il fallimento della convalida (ad esempio: il file richiesto mancava o il tipo di dati non è decimale, ecc.)
- Aggiungi questa classe alla collezione Dipendenti (es .: Elenco)
Quindi, la mia domanda è, è questo l'approccio giusto, o c'è qualche altro modo migliore / più pulito di convalidare le proprietà della classe.