0

我有一个问题,我想将一个值更新到要添加到列表中的元素。

使用通用示例:-

我有一个模型对象:-

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

现在,在我的控制器中,我有一个添加模型对象的列表:-

List<Model> _listOfModel = new List<Model>();

其次,我创建了一个映射方法来映射我的模型和 DTO

 private Model MapDTOToModel(DTO dto)
    {
        return new Model
        {
            ModelProperty1 = dto.DTOProperty1,
            ModelProperty2 = dto.DTOProperty2
        };
    }

来到我的问题:-我想要这样的事情:-//我想要一段代码在插入到//列表后更新我的 ModelPropertyStatus

    _listOfModel.Add(new Model() { ModelPropertyStatus = 1 });

//这是我要转换的一段代码:-

            Model model = new Model();
        model.ModelPropertyStatus = 1;
        _listOfModel.Add(MapDTOToModel(model));

具体来说(更新)我想要这样的东西: -

_listOfModel.Add(MapDTOToModel() { ModelPropertyStatus = 1 });

有什么建议么??

4

1 回答 1

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事件,属性在插入期间得到更新。

于 2012-11-28T12:13:05.683 回答