Почему этот обнуляемый тип создает исключение - PullRequest
0 голосов
/ 21 декабря 2011

Скажите, что у меня есть следующий словарь:

 public static Dictionary<Type, string> nullableTypeToStringMap = new Dictionary<Type, string>()
    {
        {typeof(bool?)    ,  "bool?"},   
        {typeof(byte?)    ,  "byte?"},   
        {typeof(sbyte?)   ,  "sbyte?"},  
        {typeof(char?)    ,  "char?"},    
        {typeof(decimal?) ,  "decimal?"},
        {typeof(double?)  ,  "double?"}, 
        {typeof(float?)   ,  "float?"},  
        {typeof(int?)     ,  "int?"},     
        {typeof(uint?)    ,  "uint?"},   
        {typeof(long?)    ,  "long?"},   
        {typeof(ulong?)   ,  "ulong?"},  
        {typeof(short?)   ,  "short?"},  
        {typeof(ushort?)  ,   "ushort?"}
    };

и скажите, что я выполнил эту строку:

nullableTypeToStringMap [typeof(int?)];

Я получаю следующее исключение: The type initializer for 'DatabaseUtils.Utils.TypeMap' threw an exception.

Однако, если я выполню эту строку:

nullableTypeToStringMap [typeof(int)];

Работает нормально. Есть идеи, почему обнуляемый тип вызывает у меня проблемы?

1 Ответ

3 голосов
/ 21 декабря 2011

Мои навыки психической отладки говорят мне, что ваш код находится в более раннем инициализаторе статического поля, поэтому он работает до того, как вы назначите nullableTypeToStringMap.
Вам необходимо упорядочить статические поля, чтобы не использовать поле перед его инициализацией.

...