2012-04-13 5 views
0

меня есть интерфейсПочему я получаю исключение NullReferenceException?

public interface IConfig 
{ 
    string name { get; set; } 
    string address { get; set; } 
    int phone { get; set; } 

    List<string> children { get; set; } 
} 

Вот мой конфигурационный файл, который имеет только три настройки приложения не четыре, как я имею в интерфейсе.

<add key="name" value="abc" /> 
<add key="address" value="100 Norin Street" /> 
<add key="phone" value="709-111-111111" /> 

Теперь при запуске я использую DictionaryAdapterFactory для заполнения значений файла app.config. Я успешно получаю значения app.config здесь.

private readonly IConfig _config; 
private readonly DictionaryAdapterFactory _factory; 
_factory = new DictionaryAdapterFactory(); 
_config = _config.GetAdapter<IConfig>(ConfigurationManager.AppSettings); 

сейчас во время выполнения Мне нужно заполнить значение для детей, которое является типом списка. Но я получаю нулевое исключение. Зачем?

//loop 
_config.children.Add(item.values); 

В чем проблема?

ответ

4

отсутствует где-то инициализация списка?

_config.children = new List<string>() 
+0

Я пробовал, но тогда я получаю эту ошибку. {«Невозможно наложить объект типа« System.String »на тип« System.Collections.Generic.List'1 [System.String] '. "} – user1327064

+2

показать еще код, ваше сообщение не имеет для меня большого смысла –

+0

@ user1327064, какая строка кода бросила это исключение «неспособное сделать»? – phoog

0

Будет ли это выглядеть следующим образом?

_config.children.AddRange(item.values); 

Конечно, требуется инициализация.

_config.children = new List<string>(); 
0

Вы определили «Телефон» как int в интерфейсе, в то время как значение телефона в AppSettings не может быть использовано для ввода int. измените его на строку:

string phone { get; set; } 
Смежные вопросы