任何人都可以帮忙吗?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