在Flexi Archive中,你可以将存档数据与对象的属性进行绑定。这意味着,你对字段成员的访问与赋值,等同于对存档数据的读写。
这一绑定机制简化了数据管理的流程,无需你手动编写过程代码来处理数据的读写操作。大大减少了开发时间和维护成本。
示例代码:Sample/Scripts/DataContainerForSave_Sample.cs
示例 #
FlexiDataContainer #
Flexi Archive 提供了一个专用于容纳数据属性 的 FlexiDataContainer 数据容器类。
如果你也恰有类似这样的一个设计,并且希望你的类能够利用 FlexiDataContainer ,你可以通过继承 FlexiDataContainer 来实现这一点。但是要注意,一旦继承FlexiDataContainer,继承结构就被确定了,无法再继承其他类。(你如果追求更高的灵活度,推荐你以实现接口的方式来达到同样的目的。)
public class DataContainerForSave_Sample : FlexiDataContainer
{
public string author
{
get => GetMemoryValue<DataString, string>("FlexiDataSave","author");
set => ModifyValue<DataString, string>("FlexiDataSave","author", value);
}
public int age
{
get => GetMemoryValue<DataInteger, int>("FlexiDataSave","age");
set => ModifyValue<DataInteger, int>("FlexiDataSave","age", value);
}
public DataContainerForSave_Sample(IFlexiDataArchiveManager dataArchiveManager)
{
SetDataArchiveManager(dataArchiveManager);
}
}
实现接口或直接调用 #
public class DataContainerForSave_Sample2 : IFlexiWriteOrReadArchiveOperation
{
public IFlexiDataArchiveManager DataArchiveManager => DataManagerSample.instance;
public string author
{
get => GetMemoryValue<DataString, string>("FlexiDataSave","author");
set => ModifyValue<DataString, string>("FlexiDataSave","author", value);
}
public int age
{
get => GetMemoryValue<DataInteger, int>("FlexiDataSave","age");
set => ModifyValue<DataInteger, int>("FlexiDataSave","age", value);
}
public DiskAndMemoryData<TValue> GetValue<TDataType,TValue>(string GroupKey, string SubKey) where TDataType: AbstractDataTypeWrapper<TValue>
{
return DataArchiveManager.GetValue<TDataType,TValue>(GroupKey, SubKey);
}
public TValue GetDiskValue<TDataType,TValue>(string GroupKey, string SubKey) where TDataType: AbstractDataTypeWrapper<TValue>
{
return DataArchiveManager.GetDiskValue<TDataType,TValue>(GroupKey, SubKey);
}
public TValue GetMemoryValue<TDataType,TValue>(string GroupKey, string SubKey) where TDataType: AbstractDataTypeWrapper<TValue>
{
return DataArchiveManager.GetMemoryValue<TDataType,TValue>(GroupKey, SubKey);
}
public void ModifyValue<TDataType,TValue>(string GroupKey, string SubKey, TValue value) where TDataType: AbstractDataTypeWrapper<TValue>
{
DataArchiveManager.ModifyValue<TDataType, TValue>(GroupKey, SubKey, value);
}
}
接口介绍 #
获取磁盘上数据 #
GetDiskValue<TDataType,TValue>(string GroupKey, string SubKey)
该函数根据键来获取其在磁盘上的数据。
TDataType
: AbstractDataTypeWrapper实现类(数据类型封装类)TValue
: 值的类型
返回值
:TValue
获取内存上数据 #
GetMemoryValue<TDataType,TValue>(string GroupKey, string SubKey)
该函数根据键来获取其在内存上的数据。
返回值
:TValue
获取磁盘与内存上数据 #
GetValue<TDataType,TValue>(string GroupKey, string SubKey)
该函数根据键来获取其在磁盘与内存的两份数据。
返回值
:DiskAndMemoryData<TValue> diskAndMemoryData
内存数据
:diskAndMemoryData.data
磁盘数据
:diskAndMemoryData.diskData
修改数据 #
ModifyValue<TDataType,TValue>(string GroupKey, string SubKey, TValue value)
传入键与值,修改数据。(遵循Flexi Archive 保存点触发机制)