gpt4 book ai didi

c# - Memento 模式是如何在 C#4 中实现的?

转载 作者:可可西里 更新时间:2023-11-01 03:08:29 26 4
gpt4 key购买 nike

Memento Pattern本身看起来很简单。我正在考虑实现与维基百科示例相同的方法,但在我实现之前,是否有任何 C# 语言功能可以使其更易于实现或使用?

最佳答案

一个明显的特性是泛型,实现一个泛型纪念品将允许您将它用于任何您想要的对象。

您将看到的许多示例都将使用字符串(包括当前对该问题的答复中的所有示例)作为状态,这是一个问题,因为它是 .NET 中不可变

在处理可变 对象时(就像任何具有 setter 属性的引用类型),您必须记住,当您保存备忘录时,您需要创建对象的深拷贝。否则,每当您更改原始对象时,您都会更改您的纪念品。

您可以使用像 protobuf-net 这样的序列化器来做到这一点或 json.net因为它们不需要您像普通的 .net 序列化机制那样使用可序列化属性标记您的对象。

Codeproject 有几篇关于通用备忘录实现的文章,但他们倾向于跳过 deepcopy 部分:

Generic Memento Pattern for Undo-Redo in C#

Memento Design Pattern

关于c# - Memento 模式是如何在 C#4 中实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994433/

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