gpt4 book ai didi

c# - 如何克隆 ExpandoObject

转载 作者:太空狗 更新时间:2023-10-30 00:10:30 24 4
gpt4 key购买 nike

这是基于 MVVM 的 WPF 项目:

我在对话框的 View 模型中使用 ExpandoObject,它工作得很好,因为它实现了 INotifyPropertyChanged,我可以直接在 XAML 中绑定(bind)到对象的属性.

但是,为了解决用户操作数据但随后点击取消的问题,我需要复制 ExpandoObject 以恢复原始内容。

在对话框中没有属性被添加到对象。

如何克隆它?

最佳答案

浅拷贝:

static ExpandoObject ShallowCopy(ExpandoObject original)
{
var clone = new ExpandoObject();

var _original = (IDictionary<string, object>)original;
var _clone = (IDictionary<string, object>)clone;

foreach (var kvp in _original)
_clone.Add(kvp);

return clone;
}

深拷贝:

static ExpandoObject DeepCopy(ExpandoObject original)
{
var clone = new ExpandoObject();

var _original = (IDictionary<string, object>)original;
var _clone = (IDictionary<string, object>)clone;

foreach (var kvp in _original)
_clone.Add(kvp.Key, kvp.Value is ExpandoObject ? DeepCopy((ExpandoObject)kvp.Value) : kvp.Value);

return clone;
}

关于c# - 如何克隆 ExpandoObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22826610/

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