Bazı veri dönüşümleri yapmaya çalışıyorum. Ne yazık ki, verilerin çoğu int veya double, vb olması gereken dizelerdedir.
Yani ne var gibi bir şey:
double? amount = Convert.ToDouble(strAmount);
Bu yaklaşım ile ilgili sorun strAmount boş ise, eğer boşsa null değerinde olmasını istiyorum, bu yüzden veritabanına eklediğimde sütun null olacaktır. Bu yüzden bunu yazdım:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
Şimdi bu iyi çalışıyor, ama şimdi bir yerine beş kod satırı var. Bu, özellikle dönüştürülecek çok sayıda sütunum olduğunda, işleri okumayı biraz daha zorlaştırır.
Ben dize sınıfına bir uzantısı kullanmak düşündüm ve türünü geçmek için genel 's, çünkü bu bir çift, int veya uzun olabilir. Bu yüzden denedim:
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;
}
}
Ama hatayı alıyorum: 'string' tipi 'T'ye' dönüştürülemiyor mu?
Bunun etrafında bir yol var mı? Jenerikler kullanarak yöntemler oluşturmaya pek aşina değilim.