Список общих объектов в C # - PullRequest
3 голосов
/ 12 мая 2011

У меня есть простой класс, который включает в себя 2 свойства, одну строку и один список общих объектов.Это выглядит так:

public class SessionFieldViewModel
{
    private String _name;
    public String Name
    {
        get { return _name; }
        set { _name = value; }
    }

    private List<Object> _value;
    public List<Object> Value
    {
        get { return _value ?? new List<Object>(); }
        set { _value = value; }
    }
}

В моем основном коде (MVC Controller) я пытаюсь заполнить этот класс вручную.Имейте в виду, что когда я передаю данные из веб-формы в этот класс, используя связыватель модели по умолчанию, это заполняется очень хорошо.

Когда вручную пытаюсь создать запись и добавить ее в список, я делаю это:

        Guid id = Guid.NewGuid();

        var _searchField = new SessionFieldViewModel();
        _searchField.Name = "IDGUID";
        Object _object = (Object)id;
        _searchField.Value.Add(_object);

        _searchFields.Fields.Add(_searchField);

Когда я делаю это, я получаю заполненный класс со свойством Name «IDGUID», но универсальные списки объектов возвращаются с нулевым значением.

Когда я отлаживаю код и идухотя данные, кажется, все там и работают так, как я делаю, но когда я прохожу и проверяю _searchFields, они ничего не показывают в свойстве Value полей.

Идеи?

Заранее спасибо.

Том Тлатурелле

Ответы [ 2 ]

4 голосов
/ 12 мая 2011

Похоже, вы никогда не устанавливали _value, когда оно равно нулю из геттера. Попробуйте

public List<Object> Value
{
    get { return _value ?? (_value = new List<Object>()); }
    set { _value = value; }
}
2 голосов
/ 12 мая 2011

_value никогда не устанавливается на экземпляр List<Object>;это всегда ноль.Происходит следующее: вы возвращаете новый List<Object> и добавляете к нему Object, но вы немедленно отбрасываете вновь созданный List<Object>.

. Вам необходимо изменить определение Valueчто-то вроде этого:

private List<Object> _value = new List<Object>();
public List<Object> Value
{
    get { return _value; }
    set { _value = value; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...