الجنون ADO.NET وأنواع nullable
سؤال
ولقد يبدو أنه قد ذهب إلى أسفل حفرة أرنب. وأود أن تحويل البيانات من قواعد البيانات ADO. NET إلى نوع قيم الفارغة. في البداية أنا افترض أن يلقي على التوالي (كثافة العمليات؟) من شأنه أن يفعل ذلك. كيف ساذجة كنت. خطأ، خطأ سيئة. الآن أنا أحاول أن أكتب تحويل عام ولكن أنا الحصول على التعلق على بناء الجملة. وهذا هو الحال 2005 - شخص ما يجب أن يكون حل هذه المشكلة بالفعل. هل؟
ووشنق هو أنه عندما أحاول أن استخدام نوع قيم الفارغة كما في القيد على تحويل أحصل على خطأ في بناء الجملة:
public class NullableDBConversion
{
public static T Convert<T>(object testValue) where T : Nullable<T>
{
if (testValue is DBNull)
{
return new Nullable<T>();
}
return new Nullable<T>((T)testValue);
}
}
والهدف يكون أسلوب واحد باستخدام الأدوية للقيام بكل التحويلات. هل هذا ممكن أو لا بد لي أن أكتب عدة.
المحلول
وT : Nullable<T>
لا تجعل حقا معنى كقيد - التفكير في ما T
يجب أن يكون. لا يمكن أن تكون قيم الفارغة في حد ذاته. هل يمكن أن يكون لديك:
where T : Nullable<U> where U : struct
ولكن ذلك سيكون غامضا إلى حد ما. أعتقد أنه من الأسهل لجعل T
نوع غير قيم الفارغة وتشير فقط إلى Nullable<T>
. أعتقد أنك تريد هذا:
public static Nullable<T> Convert<T>(object testValue) where T : struct
{
return testValue is DBNull ? null : new Nullable<T>((T)testValue);
}