【问题标题】:Observable collection of tuples how to mark an item as non serializable元组的可观察集合如何将项目标记为不可序列化
【发布时间】:2016-02-26 14:05:36
【问题描述】:

我有一组元组

ObservableCollection<Tuple<string, object, object>> oc = new ObservableCollection<Tuple<string, object, object>>();

我希望用户能够在其中添加和使用新项目。 但是当涉及到序列化时,只有前两项是重要的。 所以最后一个不必记录在文件系统中。

当然这不是什么大问题,因为我可以循环所有元素并将它们设置为 null,但我想知道是否可以自动执行此操作。

提前谢谢你

--添加-- 我现在想到的是创建一个 MyTuple3 类,它继承自 Tuple 类,其中只有前两个元素被标记为可序列化。话虽如此,仍在寻找更好的东西。

【问题讨论】:

  • 你的想法最后听起来是对的。不知道为什么需要元组或从它继承,自定义类型应该在这里很好地完成工作。

标签: c# wpf serialization tuples observablecollection


【解决方案1】:

我不确定我是否正确理解了这个问题,但你为什么不做类似的事情

var toSerialize = oc.Take(2);

然后serialite toSerialize

【讨论】:

  • 为什么要投反对票?也许不是最好的解决方案,但它错了吗?
  • @Patrick,这取决于您的问题是什么:序列化集合中特定数量的项目或序列化这些项目的特定属性。
  • 解决方法不能通用。我有一个包含 3 个元素的元组的各种列表,并且必须处理以下情况:案例 (A) 我必须序列化元组 item1、item2、item3 的所有元素。案例(B)我只需要序列化两个元素,所以 item1 e item2。简而言之,当我反序列化所有元素时,情况 B 都将为空。
  • @unkreativ 您的解决方案可以解决问题。我必须测试这是否有效:在序列化之前我做 oc= oc.Take(2);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多