ฉันพยายามแปลงข้อมูลบางอย่าง น่าเสียดายที่ข้อมูลส่วนใหญ่อยู่ในสตริงซึ่งควรเป็น int หรือ double เป็นต้น
ดังนั้นสิ่งที่ฉันมีคือ:
double? amount = Convert.ToDouble(strAmount);
ปัญหาของวิธีนี้คือถ้า strAmount ว่างเปล่าถ้ามันว่างเปล่าฉันต้องการให้มันเป็นจำนวนว่างดังนั้นเมื่อฉันเพิ่มลงในฐานข้อมูลคอลัมน์จะเป็นโมฆะ ดังนั้นฉันจึงลงเอยด้วยการเขียนสิ่งนี้:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
ตอนนี้ใช้ได้ดี แต่ตอนนี้ฉันมีโค้ดห้าบรรทัดแทนที่จะเป็นหนึ่งบรรทัด สิ่งนี้ทำให้อ่านยากขึ้นเล็กน้อยโดยเฉพาะเมื่อฉันมีคอลัมน์จำนวนมากที่ต้องแปลง
ฉันคิดว่าฉันจะใช้ส่วนขยายของคลาสสตริงและของทั่วไปเพื่อส่งเป็นประเภทเพราะนี่อาจเป็น double หรือ int หรือยาวก็ได้ ดังนั้นฉันจึงลองทำสิ่งนี้:
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;
}
}
แต่ฉันได้รับข้อผิดพลาด: ไม่สามารถแปลง 'string' เป็น 'T' ได้
มีวิธีแก้ไขไหม? ฉันไม่คุ้นเคยกับการสร้างวิธีการที่ใช้ยาชื่อสามัญ