in uno dei miei progetti che sto utilizzando seguendo due metodi. 1. GetDoubleValue e 2. GetIntValue. GetDoubleValue utilizza double.TryParse per il parametro str string e restituisce 0 se fallisce mentre GetIntValue prova int.TryParse per il parametro str string e restituisce 0 se fallisce. Quello che voglio è combinare questi due metodi in un metodo generico che insieme alla stringa str riceva anche il parametro T così che se voglio usare il metodo GetDoubleValue posso usare double per il parametro T e se voglio usare il metodo GetIntValue posso usare Int per il parametro Tcome utilizzare <T>. TryParse in un metodo generico mentre T è o doppio o Int
public double GetDoubleValue(string str)
{
double d;
double.TryParse(str, out d);
return d;
}
public int GetIntValue(string str)
{
int i;
int.TryParse(str, out i);
return i;
}
Nota: ho provato qualcosa di simile;
private T GetDoubleOrIntValue<T>(string str) where T : struct
{
T t;
t.TryParse(str, out t);
return t;
}
EDIT
nel mio database Ho più di 30 colonne in tabelle differenct hanno tipo di dati numerici. Voglio inserire 0 in ogni colonna se l'utente non scrive nulla nella casella di testo in cui lascia tutte o alcune delle caselle di testo vuote. Se non utilizzo il metodo GetIntValue, dovrò utilizzare il metodo body più di 30 volte. è per questo che lo sto facendo attraverso l'approccio metodologico. Sto scrivendo tre dei più di trenta esemplari per esempio
cmd.Parameters.Add("@AddmissionFee", SqlDbType.Decimal).Value = GetIntValue(tbadmissionfee.Text);
cmd.Parameters.Add("@ComputerFee", SqlDbType.Decimal).Value = GetIntValue(tbcomputerfee.Text);
cmd.Parameters.Add("@NotesCharges", SqlDbType.Decimal).Value = GetDoubleValue(tbnotescharges.Text);
voglio combinare i suddetti due metodi perché oggi sto avendo due metodi come questo che, se combinati non si ottiene alcun miglioramento meglio nella programmazione, ma domani potrei avere decine di metodi come questo che saranno meglio combinati in un unico metodo generico. ad esempio, potrei avere GetInt32Value, GetShortValue ecc. Spero che ora sia cancellato perché voglio questo ???
Con il raccolto di vincoli di tipo generico, questo non è possibile. – Oded
Come chiamerai comunque questo metodo generico? – BoltClock
Sei sicuro di volere che questa funzione restituisca automaticamente un valore predefinito se l'analisi fallisce? – Lee