Получение определения типа для обнуляемых типов разбивает код для не обнуляемых типов - PullRequest
3 голосов
/ 19 марта 2012

Это дополнительный вопрос к следующему, если вы хотите увидеть: Parse to Nullable Enum

Type t = currentProperty.PropertyType;
if (t.GetGenericTypeDefinition() == typeof(Nullable<>))
    t = t.GetGenericArguments().First();

Я получаю сообщение об ошибке в строке # 2, которая является оператором IF.

System.Reflection.TargetInvocationException : Exception has been thrown by the 
target of an invocation. ----> System.InvalidOperationException : This operation 
is only valid on generic types.
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, Object[] args)

Как я могу проверить это условие перед выполнением кода в операторе IF?

1 Ответ

6 голосов
/ 19 марта 2012

Вот документация MSDN по проверке на обнуляемые типы

Похоже, вам нужно добавить следующее:

if(t.IsGenericType && ...
...