参考' GetUnderlyingType'从通话返回功能' GetUnderlyingType'可能是null

时间:2017-02-02 11:11:56

标签: c# klocwork

我在进行代码分析时遇到了Klocwork问题,

参考' GetUnderlyingType'从通话返回功能' GetUnderlyingType'可能为空

if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null)
                {
                    value = row[columnname].ToString().Replace("$", "").Replace(",", "");
                    objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null);
                }
                else
                {
                    value = row[columnname].ToString().Replace("%", "");
                    objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
                }

enter image description here

1 个答案:

答案 0 :(得分:1)

From the documentation

  

返回值
  键入:System.Type

     

nullableType参数的type参数,如果是nullableType   参数是一个封闭的通用可空类型; 否则,null

您使用外部if子句处理此问题,但VisualStudio似乎无法识别它。解决方案是:

var ut = Nullable.GetUnderlyingType(objProperty.PropertyType);
if (ut != null)
{
    value = row[columnname].ToString().Replace("$", "").Replace(",", "");
    objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(ut.ToString())), null);
}
else
{
    value = row[columnname].ToString().Replace("%", "");
    objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);
}
相关问题