断开两个类之间的引用



今天我发现了我的编程的一大亮点。

有一个类

class Foo
{
    classA property {get; set;}
    classB property {get; set;}
    classC property {get; set;}
}

每个类 A、B 和 C 也有 svereal 类作为属性。所以,我的班级Foo是相当嵌套的。claas Foo 将参数传递给由 ShowDialog(( 命令打开的选项窗口。

显示对话框((结果假 -> 选定Foo = 备份/结果真 -> 离开方法

因此,如果用户取消选项窗口,则传递给设置窗口的 ViewModel 的 SelectedFoo 将被备份替换。嗯,理论上。这些类都是引用类型,并更改为 MVVM 中的数据绑定。所以我的备份也被更改了。

我怎样才能阻止这种行为?有没有办法断开这两个类之间的联系?

我能想到几种方法。

Wayback 的旧模式是将当前设置深度克隆到新对象中,并且仅在使用单击"应用"时才应用新设置。 这样,它不会影响系统的其余部分,直到他们"确定"它。 如果他们单击"取消",则无需执行任何操作,因为我们尚未覆盖任何内容。

另一个稍微复杂的替代方法是根据需要备份单个属性(可选通过反射(。 在此模式下,启动时不需要深度克隆。当用户进行更改时,您会先记录旧值,然后再设置新值。 如果用户决定取消,则播放所有更改,但这次将属性设置为以前的值。

最新更新