如何复制一个对象
本文关键字:一个对象 复制 何复制 | 更新日期: 2023-09-27 18:15:27
我有一个计划列表,或者别的什么,我不想删除它们中的任何一个。这就是为什么当有人选择"编辑"选项时,我实际上想添加一个具有相同引用的新计划,但只是一个新的ID。然后,我根本不在乎在编辑视图(实际上是创建视图)中将对其进行什么更改。
我使用相同的观点是否创建新的或编辑,但唯一的区别是,如果行动计划——我知道这不是创建新但编辑,然后我想创建视图中显示所有的"编辑"计划参数,如果没有任何计划(如果行动没有得到任何计划)——我知道这是一个完全的新计划(有人选择"创建新的"选项),然后我想要显示相同的观点——空白字段。
下面是我的代码:public ActionResult CreatePlan(Plan? plan)
{
if (plan == null)
{
return View();
}
else
{
Plan oldPlan = db.PlanSet.Single(p => p.Id == plan.Value.Id);
return View(oldPlan);
}
}
当前,如您所见,如果操作确实获得一个对象-它允许我编辑旧计划。
我如何复制它,以便在视图中进行的任何更改都将使用另一个计划ID保存??希望我把自己说得很清楚,我很高兴得到一些帮助!
我认为你想要的是:Object.MemberwiseClone().
object . memberwiseclone()创建一个对象的浅拷贝,也就是说,它创建一个新对象并复制旧对象的引用(当然,值类型是复制的)。
现在,由于MemberwiseClone实际上是受保护的,您必须做如下操作:
public class Plan
{
public Plan clone()
{
return (Plan)this.MemberwiseClone();
}
}
给你的Plan
类一个复制构造函数,而不是返回View(oldPlan)
返回View(Plan(oldPlan))
对于我的问题,我根本不需要使用复杂的东西。
我所需要做的就是创建两个get操作,一个带有空白字段,另一个带有满是编辑对象的字段。
两个视图将它们的参数发送到相同的post action,该post action获取发送的对象并将其添加到数据库中。当我写:db.PlanSet.AddObject(plan);
-它自动添加相同的对象与新的Id,不删除或改变原来的对象。
祝你好运! !