XFEExtension.NetCore.AutoConfig是一个可以自动实现配置文件存储的工具
//创建配置文件类
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
string name;
[ProfileProperty]
int _age;
}
//使用配置文件
class Program
{
static void Main(string[] args)
{
SystemProfile.Name = "Test";//在设置值的时候会自动记录并储存
//SystemProfile.Age = 1;
Console.WriteLine(SystemProfile.Name);
Console.WriteLine(SystemProfile.Age);//下次打开程序会自动读取上次程序退出时储存的值
}
}
//配置文件类
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
string name;
[ProfileProperty]
int _age;
public SystemProfile()
{
DefaultProfileOperationMode = ProfileOperationMode.Xml; // 改用XML格式存储配置文件,文件扩展名会自动更改为.xml
}
}
//配置文件类
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
string name;
[ProfileProperty]
int _age;
public SystemProfile()
{
DefaultProfileOperationMode = ProfileOperationMode.Custom; // 设置为自定义存储方法
ProfilePath = $"MyPath/MySubPath/{nameof(SystemProfile)}"; // 设置路径为MyPath/MySubPath/SystemProfile
ProfileExtension = ".ini"; // 设置文件扩展名为.ini文件
LoadOperation = (profileInstance, profileString, propertyInfoDictionary, propertySetFuncDictionary) => return XXX; // 自定义配置文件的加载方法,使用Lambda表达式
SaveOperation = MyCustomSaveProfileOperation; // 自定义配置文件的保存方法,使用已有的方法
}
// 自定义的配置文件保存方法
public static string MyCustomSaveProfileOperation(XFEProfile profileInstance, Dictionary<string, Type> propertyInfoDictionary, Dictionary<string, GetValueDelegate> propertyGetFuncDictionary) => return XXX;
}
//配置文件类
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
[ProfilePropertyAddGet("Current.nameList.CurrentProfile = Current")]
[ProfilePropertyAddGet("return Current.nameList")]
ProfileList<string> nameList = [];
[ProfileProperty]
[ProfilePropertyAddGet("Current.nameIdDictionary.CurrentProfile = Current")]
[ProfilePropertyAddGet("return Current.nameIdDictionary")]
ProfileDictionary<string, long> nameIdDictionary = [];
}
//使用配置文件
class Program
{
static void Main(string[] args)
{
SystemProfile.NameList.Add("张三"); //在添加值的时候会自动记录并储存
SystemProfile.NameList.AddRange(["李四", "王五"]); //添加多条记录
SystemProfile.NameList.Remove("李四"); //删除值的时候也会自动记录
SystemProfile.NameIdDictionary.Add("张三", "0da87wd89a-0dwa8d"); //字典也是一样
}
}
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
[ProfilePropertyAddGet(@"Console.WriteLine(""获取了Name"")")]
[ProfilePropertyAddGet("return Current.name")]
[ProfilePropertyAddSet(@"Console.WriteLine(""设置了Name"")")]
[ProfilePropertyAddSet("Current.name = value")]
string name = string.Empty;
[ProfileProperty]
[ProfilePropertyAddGet(@"Console.WriteLine(""获取了Age"")")]
[ProfilePropertyAddGet("return Current._age")]
[ProfilePropertyAddSet(@"Console.WriteLine(""设置了Age"")")]
[ProfilePropertyAddSet("Current._age = value")]
int _age;
}
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
string name = "John Wick";
[ProfileProperty]
int _age = 59;
}
partial class SystemProfile : XFEProfile
{
/// <summary>
/// 名称
/// 这段注释会自动添加至自动生成的Name属性上
/// </summary>
[ProfileProperty]
string name;
[ProfileProperty]
int _age;
}
partial class SystemProfile : XFEProfile
{
[ProfileProperty]
string name;
[ProfileProperty]
int _age;
static partial void GetNameProperty()
{
Console.WriteLine("获取了Name");
}
static partial void SetNameProperty(ref string value)
{
Console.WriteLine($"设置了Name:从{Name}变为了{value}");
}
static partial void GetAgeProperty()
{
Console.WriteLine("获取了Age");
}
static partial void SetAgeProperty(ref int value)
{
value = 1999; // 可以直接设置值
Console.WriteLine($"设置了Age:从{Age}变为了1999");
}
}