using System; namespace PCL.Core.App.Configuration; #pragma warning disable CS9113 // Parameter is unread. /// /// 标记一个 partial 属性,以添加对应配置项并自动生成访问器。 /// /// 配置键 /// 默认值 /// 配置来源 /// 值类型 [AttributeUsage(AttributeTargets.Property)] public sealed class ConfigItemAttribute(string key, TValue? defaultValue, ConfigSource source = default) : Attribute; /// /// 标记一个 partial 属性,以添加对应配置项并自动生成访问器。 /// 注意:默认值将调用指定类型的无参构造器来获取,以解决 C# attribute 在 2025 年仍然不支持隔壁 JVM 在 2015 /// 年就支持的极其先进的自定义类型参数的问题。因此,值的类型必须有公开的无参构造器,否则运行时将会抛出异常。 /// /// 配置键 /// 配置来源 /// 值类型 [AttributeUsage(AttributeTargets.Property)] public sealed class AnyConfigItemAttribute(string key, ConfigSource source = default) : Attribute; /// /// 标记一个 partial 类为配置组,以自动实现 并生成对应的作用域检查方法。 /// /// 组名,需符合 C# 标识符规范 /// 组级别的默认配置来源 [AttributeUsage(AttributeTargets.Class, Inherited = false)] public sealed class ConfigGroupAttribute(string name, ConfigSource source = default) : Attribute; /// /// 标记一个类型为 的 public static 属性,以注册配置项事件。 /// [AttributeUsage(AttributeTargets.Property)] public sealed class RegisterConfigEventAttribute : Attribute;
注意:默认值将调用指定类型的无参构造器来获取,以解决 C# attribute 在 2025 年仍然不支持隔壁 JVM 在 2015 /// 年就支持的极其先进的自定义类型参数的问题。因此,值的类型必须有公开的无参构造器,否则运行时将会抛出异常。