gpt4 book ai didi

c#给定基类实例,更新派生类的基类属性

转载 作者:行者123 更新时间:2023-12-05 01:21:35 24 4
gpt4 key购买 nike

我有一个继承基类的 View 模型(使用 MVC4)

public class TimeTaskViewModel : TimeDetailTask
{
public string TaskTypeDescription { get; set; }

}

我有一个方法可以将 View 模型转换为类,给定该类的一个实例。我希望能够这样做,这样就不必显式设置基类的每个属性,然后只需更新 View 模型的附加属性:

public TimeTaskViewModel ConvertClassToViewModel(TimeDetailTask entity)
{
TimeTaskViewModel viewModel = new TimeTaskViewModel();

viewModel.base = entity;
viewModel.TaskTypeDescription = entity.TaskTypes.TaskTypeDescription;
return viewModel;
}

无论如何都要这样做?还是我离基地太远了?

注意:我需要一个平面类,因为 View 模型也将以 IEnumerable 格式使用以传递给前端的 Kendo UI 网格,它无法处理复杂的类。

最佳答案

不,不能完全按照您的要求完成。以下是一些选项:

1:更改您的 TimeTaskViewModel 类以包含 TimeDetailTask​​ 而不是扩展它。

public class TimeTaskViewModel
{
public TimeDetailTask TimeDetailTask { get; set; }
public string TaskTypeDescription { get; set; }
}

2:创建一个 TimeTaskViewModel(TimeDetailTask​​) 构造函数并在那里手动复制属性。

public class TimeTaskViewModel : TimeDetailTask
{
public string TaskTypeDescription { get; set; }
public TimeTaskViewModel(TimeDetailTask baseTask)
{
this.SomeProperty = baseTask.SomeProperty;
// and so on
}
}

3:使用AutoMapper 、反射或类似于将属性从一个复制到另一个的东西。

Mapper.CreateMap<TimeDetailTask, TimeTaskViewModel>();

// Perform mapping

TimeTaskViewModel viewModel =
Mapper.Map<TimeDetailTask, TimeTaskViewModel>(baseTask);

关于c#给定基类实例,更新派生类的基类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com