Saya mencoba melakukan beberapa konversi data. Sayangnya, banyak datanya dalam string, yang seharusnya int atau double, dll ...
Jadi yang saya punya adalah seperti:
double? amount = Convert.ToDouble(strAmount);
Masalah dengan pendekatan ini adalah jika strAmount kosong, jika kosong saya ingin nilainya menjadi nol, jadi ketika saya menambahkannya ke dalam database, kolom akan menjadi null. Jadi saya akhirnya menulis ini:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Sekarang ini berfungsi dengan baik, tetapi sekarang saya memiliki lima baris kode, bukan satu. Ini membuat hal-hal menjadi sedikit lebih sulit untuk dibaca, terutama ketika saya memiliki banyak kolom untuk diubah.
Saya pikir saya akan menggunakan ekstensi ke kelas string dan generik untuk meneruskan tipe, ini karena bisa jadi ganda, atau int, atau panjang. Jadi saya mencoba ini:
public static class GenericExtension
{
public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct
{
if (s.Trim().Length > 0)
{
return (Nullable<T>)s;
}
return null;
}
}
Tapi saya mendapatkan kesalahan: Tidak dapat mengubah jenis 'string' menjadi 'T?'
Apakah ada jalan keluarnya? Saya tidak terlalu terbiasa dengan membuat metode menggunakan obat generik.