任何人都可以幫忙嗎?c#:IsNullableType助手類?
我有一些在兩個項目之間共享的代碼。代碼指向一個基本上來自db的屬性集合的模型。
存在的問題是,一些屬性在1個模型中使用可空類型和其他它不
真正的DBS應該使用相同的,但他們不..
因此,例如有一個稱爲IsAvailble的屬性,它在一個模型中使用「bool」,另一個使用bool? (可空類型)
所以在我的代碼我這樣做
objContract.IsAvailble.Value ? "Yes" : "No" //notice the property .VALUE as its a bool? (nullable type)
,但此行會失敗在使用標準「布爾」模式(不能爲空),因爲是在類型沒有財產.value的不可爲空
是否有某種助手類,我檢查屬性是否爲可空類型,我可以返回.Value ..否則,我只是返回屬性。
有人有這個解決方案嗎?
編輯
這是我現在有.....我在可空類型的版本檢查的HasValue
公共靜態類NullableExtensions { 公共靜態牛逼的GetValue(這件T OBJ )其中T:struct { return obj; } public static T GetValue(this Nullable obj)where T:struct { return obj.Value; }
public static T GetValue<T>(this T obj, T defaultValue) where T : struct
{
return obj;
}
public static T GetValue<T>(this Nullable<T> obj, T defaultValue) where T : struct
{
if (obj.HasValue)
return obj.Value;
else
return defaultValue;
}
}
不是一個很好的合同,你已經到了那裏... – Kobi 2010-03-08 11:38:07
感謝大家的意見,但布爾?只是一個例子..我也有很多不同的類型,可以爲空或不,即int,int?,DateTime,DateTime? ....我希望soemthing通用 – 2010-03-08 11:48:04
嗨kobi,是的,我知道它不理想....但它的代碼,我目前使用...在未來,我會改變它 – 2010-03-08 11:48:34