Skip to content

快照服务 API

TreeSnapshotService

树快照服务,用于导出和导入节点树状态。

静态方法

csharp
// 导出节点树快照
static NodeSnapshot Export(IChangeNode root);

// 从快照创建新节点树
static IChangeNode Import(NodeSnapshot snapshot);

// 将快照导入到现有节点
static void ImportInto(IChangeNode target, NodeSnapshot snapshot);

示例:

csharp
// 导出
var snapshot = TreeSnapshotService.Export(root);

// 导入
var newRoot = TreeSnapshotService.Import(snapshot);

// 导入到现有节点
TreeSnapshotService.ImportInto(existingRoot, snapshot);

NodeSnapshot

节点快照类。

属性

属性类型说明
NodeNamestring节点名称
NodeTypestring节点类型
PropertiesDictionary<string, object>节点属性
ChildrenList<NodeSnapshot>子节点快照

SnapshotSerializer

快照序列化器。

静态方法

csharp
// 序列化为 JSON
static string ToJson(NodeSnapshot snapshot);

// 从 JSON 反序列化
static NodeSnapshot FromJson(string json);

// 序列化为二进制
static byte[] ToBinary(NodeSnapshot snapshot);

// 从二进制反序列化
static NodeSnapshot FromBinary(byte[] data);

示例:

csharp
// JSON 序列化
var json = SnapshotSerializer.ToJson(snapshot);
var loaded = SnapshotSerializer.FromJson(json);

// 二进制序列化
var bytes = SnapshotSerializer.ToBinary(snapshot);
var loaded = SnapshotSerializer.FromBinary(bytes);

ISnapshotSerializable

可序列化接口,用于自定义节点的序列化行为。

csharp
public interface ISnapshotSerializable
{
    Dictionary<string, object> GetSnapshotProperties();
    void ApplySnapshotProperties(Dictionary<string, object> properties);
}

示例:

csharp
public class CustomNode : BubblingNodeBase, ISnapshotSerializable
{
    public string CustomProperty { get; set; }

    public Dictionary<string, object> GetSnapshotProperties()
    {
        return new Dictionary<string, object>
        {
            ["CustomProperty"] = CustomProperty
        };
    }

    public void ApplySnapshotProperties(Dictionary<string, object> properties)
    {
        if (properties.TryGetValue("CustomProperty", out var value))
        {
            CustomProperty = value?.ToString();
        }
    }
}

MultiValueSnapshotService

多值快照服务。

方法

csharp
// 添加快照
void Add(string key, NodeSnapshot snapshot);

// 获取快照
NodeSnapshot Get(string key);

// 比较快照
SnapshotDiff Compare(string key1, string key2);

基于 MIT 许可发布