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 属性中没有显示任何内容。
想法?
提前谢谢。
汤姆特拉图雷勒
当 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; }
}