我有一个问题,我想将一个值更新为要添加到列表中的元素。
使用通用示例: -
我有一个模型对象: -
public class Model
{
public int ModelProperty1 { get; set; }
public int ModelProperty2 { get; set; }
public int ModelPropertyStatus { get; set; }
}
我有一个DTO对象: -
public class DTO
{
public int DTOProperty1 { get; set; }
public int DTOProperty2 { get; set; }
public int DTOPropertyStatus { get; set; }
}
现在,在我的Controller中,我有一个List,它添加了Model对象: -
List<Model> _listOfModel = new List<Model>();
其次,我创建了一个映射方法来映射我的Model&amp; DTO
private Model MapDTOToModel(DTO dto)
{
return new Model
{
ModelProperty1 = dto.DTOProperty1,
ModelProperty2 = dto.DTOProperty2
};
}
来到我的问题: - 我想要这样的东西工作: - //我想要一段代码,在插入// List
之后更新我的ModelPropertyStatus _listOfModel.Add(new Model() { ModelPropertyStatus = 1 });
//这是我要转换的代码片段: -
Model model = new Model();
model.ModelPropertyStatus = 1;
_listOfModel.Add(MapDTOToModel(model));
具体(更新) 我想要这样的东西: -
_listOfModel.Add(MapDTOToModel() { ModelPropertyStatus = 1 });
任何建议?
答案 0 :(得分:1)
您正在寻找ObservableCollection
:
表示动态数据集合,在添加,删除项目或刷新整个列表时提供通知。
以下是一个例子:
public class Model
{
public int ModelProperty1 { get; set; }
public int ModelProperty2 { get; set; }
public int ModelPropertyStatus { get; set; }
}
void Main()
{
ObservableCollection<Model> _listOfModel = new ObservableCollection<Model>();
_listOfModel.CollectionChanged += (s, o) =>
{
foreach (var m in o.NewItems)
((Model)m).ModelPropertyStatus = 1;
};
var model = new Model();
Console.WriteLine("Before add: " + model.ModelPropertyStatus.ToString());
_listOfModel.Add(model);
Console.WriteLine("After add: " + model.ModelPropertyStatus.ToString());
}
输出:
添加前:0
添加后:1
如您所见,使用CollectionChanged
事件,属性在插入期间获得更新。