XFEExtension
【DLL】XFE各类拓展是一个C#的DLL库,旨在优化C#代码中常用语句的使用,并提供更简洁的访问方式,同时提供Xunit测试框架,快速搭建服务器/客户端,免费ChatGPTAPI接口,免费通讯服务器,XFE下载器,新增格式等
关注
0
Fork
0
Star
0
using System.Reflection;
namespace XFEExtension.NetCore.ProfileExtension;
/// <summary>
/// 配置文件信息
/// </summary>
/// <param name="profileType">配置文件类型</param>
/// <param name="path">配置文件储存位置</param>
/// <param name="description">配置文件描述</param>
public class ProfileInfo(Type profileType, string path = "", string description = "")
{
/// <summary>
/// 配置文件类型
/// </summary>
public Type Profile { get; init; } = profileType;
/// <summary>
/// 配置文件储存位置
/// </summary>
public string Path { get; init; } = path == "" ? $"{((XFEProfile.ProfilesRootPath[^1] == '/' || XFEProfile.ProfilesRootPath[^1] == '\\') ? $"{XFEProfile.ProfilesRootPath}{profileType.Name}.xfe" : $"{XFEProfile.ProfilesRootPath}/{profileType.Name}.xfe")}" : path;
/// <summary>
/// 配置文件描述
/// </summary>
public string? Description { get; set; } = description;
/// <summary>
/// 配置文件属性列表
/// </summary>
public List<ProfileEntryInfo> PropertiesInfo { get; init; } = GetPropertiesWithProfileAttribute(profileType);
internal static List<ProfileEntryInfo> GetPropertiesWithProfileAttribute(Type type)
{
var profileEntryList = new List<ProfileEntryInfo>();
foreach (var propertyInfo in type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static))
if (propertyInfo.GetCustomAttribute<ProfilePropertyAttribute>() is not null)
profileEntryList.Add(new ProfileEntryInfo(propertyInfo.Name, propertyInfo));
return profileEntryList;
}
/// <summary>
/// 配置文件类型生成
/// </summary>
/// <param name="profileType"></param>
public static implicit operator ProfileInfo(Type profileType) => new(profileType);
}
using System.Reflection;
namespace XFEExtension.NetCore.ProfileExtension;
/// <summary>
/// 配置文件信息
/// </summary>
/// <param name="profileType">配置文件类型</param>
/// <param name="path">配置文件储存位置</param>
/// <param name="description">配置文件描述</param>
public class ProfileInfo(Type profileType, string path = "", string description = "")
{
/// <summary>
/// 配置文件类型
/// </summary>
public Type Profile { get; init; } = profileType;
/// <summary>
/// 配置文件储存位置
/// </summary>
public string Path { get; init; } = path == "" ? $"{((XFEProfile.ProfilesRootPath[^1] == '/' || XFEProfile.ProfilesRootPath[^1] == '\\') ? $"{XFEProfile.ProfilesRootPath}{profileType.Name}.xfe" : $"{XFEProfile.ProfilesRootPath}/{profileType.Name}.xfe")}" : path;
/// <summary>
/// 配置文件描述
/// </summary>
public string? Description { get; set; } = description;
/// <summary>
/// 配置文件属性列表
/// </summary>
public List<ProfileEntryInfo> PropertiesInfo { get; init; } = GetPropertiesWithProfileAttribute(profileType);
internal static List<ProfileEntryInfo> GetPropertiesWithProfileAttribute(Type type)
{
var profileEntryList = new List<ProfileEntryInfo>();
foreach (var propertyInfo in type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static))
if (propertyInfo.GetCustomAttribute<ProfilePropertyAttribute>() is not null)
profileEntryList.Add(new ProfileEntryInfo(propertyInfo.Name, propertyInfo));
return profileEntryList;
}
/// <summary>
/// 配置文件类型生成
/// </summary>
/// <param name="profileType"></param>
public static implicit operator ProfileInfo(Type profileType) => new(profileType);
}