//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using System.Collections.Generic; namespace GameFramework.DataNode { /// /// 数据结点接口。 /// public interface IDataNode { /// /// 获取数据结点的名称。 /// string Name { get; } /// /// 获取数据结点的完整名称。 /// string FullName { get; } /// /// 获取父数据结点。 /// IDataNode Parent { get; } /// /// 获取子数据结点的数量。 /// int ChildCount { get; } /// /// 根据类型获取数据结点的数据。 /// /// 要获取的数据类型。 /// 指定类型的数据。 T GetData() where T : Variable; /// /// 获取数据结点的数据。 /// /// 数据结点数据。 Variable GetData(); /// /// 设置数据结点的数据。 /// /// 要设置的数据类型。 /// 要设置的数据。 void SetData(T data) where T : Variable; /// /// 设置数据结点的数据。 /// /// 要设置的数据。 void SetData(Variable data); /// /// 根据索引检查是否存在子数据结点。 /// /// 子数据结点的索引。 /// 是否存在子数据结点。 bool HasChild(int index); /// /// 根据名称检查是否存在子数据结点。 /// /// 子数据结点名称。 /// 是否存在子数据结点。 bool HasChild(string name); /// /// 根据索引获取子数据结点。 /// /// 子数据结点的索引。 /// 指定索引的子数据结点,如果索引越界,则返回空。 IDataNode GetChild(int index); /// /// 根据名称获取子数据结点。 /// /// 子数据结点名称。 /// 指定名称的子数据结点,如果没有找到,则返回空。 IDataNode GetChild(string name); /// /// 根据名称获取或增加子数据结点。 /// /// 子数据结点名称。 /// 指定名称的子数据结点,如果对应名称的子数据结点已存在,则返回已存在的子数据结点,否则增加子数据结点。 IDataNode GetOrAddChild(string name); /// /// 获取所有子数据结点。 /// /// 所有子数据结点。 IDataNode[] GetAllChild(); /// /// 获取所有子数据结点。 /// /// 所有子数据结点。 void GetAllChild(List results); /// /// 根据索引移除子数据结点。 /// /// 子数据结点的索引。 void RemoveChild(int index); /// /// 根据名称移除子数据结点。 /// /// 子数据结点名称。 void RemoveChild(string name); /// /// 移除当前数据结点的数据和所有子数据结点。 /// void Clear(); /// /// 获取数据结点字符串。 /// /// 数据结点字符串。 string ToString(); /// /// 获取数据字符串。 /// /// 数据字符串。 string ToDataString(); } }