gpt4 book ai didi

c# - 如何将对象转换为具有所有相同属性的另一种对象类型,除了新类型多了一个字段

转载 作者:行者123 更新时间:2023-12-05 02:56:52 29 4
gpt4 key购买 nike

我正在尝试将类型技能转换为类型 SkillViewModel。

这是我尝试转换的地方:

    SkillViewModel skillViewModel = (SkillViewModel)skill;

这是我要转换的技能模型:

    public class Skill
{
public int SkillId { get; set; }
public string SkillName { get; set; }
public string SkillDescription { get; set; }
public int SkillLevelId { get; set; }
public string SkillLevelDescription { get; set; }
public int LevelId { get; set; }
public int LevelNumber { get; set; }
}

这是我要转换成的 SkillViewModel。它继承了技能并增加了一个属性RoleId:

    public class SkillViewModel : Skill
{
public int RoleId { get; set; }
}

============================================= ============================

已解决:

我没有将技能对象转换为 SkillViewModel 类型,而是创建了一个新实例并将技能中的每个显式复制到 SkillViewModel,最后添加了 roleId。

像这样:

    private SkillViewModel[] GetRoleSpecificSkills(Skill[] skills, int roleId)
{
var results = new List<SkillViewModel>();

foreach (var skill in skills)
{
SkillViewModel skillViewModel = new SkillViewModel();
skillViewModel.SkillId = skill.SkillId;
skillViewModel.SkillName = skill.SkillName;
skillViewModel.SkillDescription = skill.SkillDescription;
skillViewModel.SkillLevelId = skill.SkillLevelId;
skillViewModel.SkillLevelDescription = skill.SkillLevelDescription;
skillViewModel.LevelId = skill.LevelId;
skillViewModel.LevelNumber = skill.LevelNumber;
skillViewModel.RoleId = roleId;

results.Add(skillViewModel);
}

return results.ToArray();
}

最佳答案

您不能以这种方式将父对象强制转换为子对象。这是非常糟糕的做法。

如果你真的需要沮丧,试试这个:

var jsonParent = JsonConvert.SerializeObject(parent); 
Child c = JsonConvert.DeserializeObject<Child>(jsonParent);

关于c# - 如何将对象转换为具有所有相同属性的另一种对象类型,除了新类型多了一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60053380/

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