XFEExtension.NetCore.AutoConfig 2.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package XFEExtension.NetCore.AutoConfig --version 2.0.0                
NuGet\Install-Package XFEExtension.NetCore.AutoConfig -Version 2.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="XFEExtension.NetCore.AutoConfig" Version="2.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add XFEExtension.NetCore.AutoConfig --version 2.0.0                
#r "nuget: XFEExtension.NetCore.AutoConfig, 2.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install XFEExtension.NetCore.AutoConfig as a Cake Addin
#addin nuget:?package=XFEExtension.NetCore.AutoConfig&version=2.0.0

// Install XFEExtension.NetCore.AutoConfig as a Cake Tool
#tool nuget:?package=XFEExtension.NetCore.AutoConfig&version=2.0.0                

XFEExtension.NetCore.AutoConfig

描述

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;
}
使用ProfileList和ProfileDictionary来储存集合或字典
//配置文件类
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"); //字典也是一样
    }
}
设置get和set方法
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;
}
使用部分方法来设置get和set方法
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");
    }
}
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.5 81 12/15/2024
2.0.4 83 12/11/2024
2.0.3 78 12/10/2024
2.0.2 79 12/9/2024
2.0.1 75 12/8/2024
2.0.0 92 12/8/2024
1.3.0 101 11/9/2024
1.2.0 96 11/9/2024
1.1.1 153 7/13/2024
1.1.0 107 7/13/2024
1.0.4 104 6/4/2024
1.0.3 93 6/4/2024
1.0.2 79 6/4/2024
1.0.1 109 6/4/2024
1.0.0 102 6/4/2024

## 调整

调整多数代码,使得其尽可能的减少使用反射的次数以提高整体代码运行性能

## 新增

现在增加了对AOT编译的支持
支持在构造函数时设置默认的存储方式(XPF, Json, XML或自定义)

## 严重

由于AOT支持等多种原因,现在XFEProfile不再实现对配置文件的统一管理