gpt4 book ai didi

c# - 如何确定新创建的对象是否具有用户设置的任何属性值

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:57 25 4
gpt4 key购买 nike

这可能是软件设计或模式问题。

使用 LINQ to SQL 的 C# Wnforms 解决方案。有一个表单允许用户编辑客户对象的属性值。

如果用户想要创建一个新的客户,那么将向表单传递一个新的客户。

如果用户想要编辑现有客户,则将表单传递给现有客户。

当用户尝试关闭表单时,系统会检查是否需要保存对属性值的编辑,并提示用户保存更改:

 protected Boolean CanExit()
{
Boolean isSaveNeeded = false;
String message = String.Empty;

if (dataContext.GetChangeSet().Updates.Contains(lookupObject))
{
message = "Save your changes before closing?";
isSaveNeeded = true;
}
else if (dataContext.GetChangeSet().Inserts.Contains(lookupObject))
{
message = String.Format("Save new {0} before closing?", lookupSingularName);
isSaveNeeded = true;
}

if (isSaveNeeded && XtraMessageBox.Show(message, "Close Form", MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{ return ActionSave(); }
else
{ return true; }
}

这有两个问题:

  1. 提示为未设置属性的新客户保存。

  2. 如果用户编辑了属性值,然后将该值更改回其原始值,则提示保存

我有一个使用 ADO“原始值”解决这两个问题的模式。

使用 DataContext 解决问题的最佳方法是什么?

最佳答案

您可以使用 Memento 设计模式轻松解决它,(这样您可以比较对象 - 编辑前后)

您可以在此处查看 wiki 详细信息。

https://en.wikipedia.org/wiki/Memento_pattern

并且可以查看纪念品上的文章。

http://www.codeproject.com/Articles/186184/Memento-Design-Pattern

关于c# - 如何确定新创建的对象是否具有用户设置的任何属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32132561/

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