我在控制器中有这个:
MyTestViewModel asdf = new MyTestViewModel
{
SomeTestDate = _b.GetSomeDate(SomeID).Value,
SomeDate2 = SomeDate2.Value,
SomeDate3 = SomeDate3.Value
};
在函数“GetSomeDate”中我有:
var x = c.ExecuteScalar();
将x返回为DateTime?;
我得到InvalidOperationException,当函数返回null时,该对象必须包含值,它应该能够。
这里可能有什么问题?
/ M
答案 0 :(得分:1)
在调用Value属性的getter之前,您必须检查可空类型是否包含值,否则您将获得异常:
var date = _b.GetSomeDate(SomeID);
MyTestViewModel asdf = new MyTestViewModel
{
SomeTestDate = date.HasValue ? date.Value : DateTime.MinValue,
SomeDate2 = SomeDate2.Value,
SomeDate3 = SomeDate3.Value
};
这是getter的相关源代码(用Reflector提取):
public T get_Value()
{
if (!this.HasValue)
{
ThrowHelper.ThrowInvalidOperationException(ExceptionResource.InvalidOperation_NoValue);
}
return this.value;
}