C# 中的泛型对象列表

本文关键字:对象 列表 泛型 | 更新日期: 2023-09-27 17:56:03

我有一个简单的类,包括 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 控制器)中,我正在尝试手动填充此类。 请记住,当我使用默认模型绑定器将数据从 Web 窗体传递到此类时,它会很好地填充。

当手动尝试创建记录并将其添加到列表中时,我这样做:

        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",但对象的泛型列表返回 null。

当我调试代码并遍历它时,数据似乎都在那里并且像我一样工作,但是当我通过并检查_searchFields时,它在字段的 Value 属性中没有显示任何内容。

想法?

提前谢谢。

汤姆特拉图雷勒

C# 中的泛型对象列表

当 getter 为空时,您似乎从未设置过_value。尝试

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

_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; }
}