2017-02-02 2 views
0

Я получаю ниже Klocwork вопроса, при этом анализ кода,Ссылка возврата «GetUnderlyingType» от вызова функции «GetUnderlyingType» может быть пустым

Ссылка возврата «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

From the documentation

Возвращаемое значение
Тип: System.Type

Аргумент типа параметра nullableType, если параметр nullableType является закрытым общим обнуляемым типа; в противном случае нуль

Вы справиться с этим своим внешним 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); 
} 
+0

какой код изменения требуется здесь, могли бы вы опубликовать код – user584018

+0

я пропустил внешний, если п. Нуль handeled, но это не признано VS. – Dawnkeeper