嗨,我在我的网格控件(复制/粘贴功能)中使用 JSON 进行反序列化项目。我想使用 JSON,因为复制粘贴必须跨应用程序域工作。
每个单元格的值类型可以不同(简单类型和复杂类型)。
class CellItem<TValue>
{
public TValue Value { get; set; }
public int GridColumnIndex { get; set; }
public int GridRowIndex { get; set; }
}
为了进行序列化,我需要获取单元格位置并存储它的值。所以我创建了一个序列化类型
public class MatrixItem
{
public int ColumnIndex { get; set; }
public int RowIndex { get; set; }
public object Value { get; set; }
}
并将它们放在一个列表中以将它们序列化到剪贴板中。这工作得很好。
现在,当我进行反序列化时,我想告诉 JSON 要反序列化哪种类型。我怎样才能做到这一点?我知道类型信息没有存储在序列化字符串中,所以我必须在代码中处理它。
我不知何故需要询问使用CellItem哪种类型进行反序列化并让转换器知道。但我不知道该怎么做。
有类似的东西,[JsonConverter(typeof(*))]但它需要一个编译时已知的转换器,并且转换器会在运行时改变。