using System; namespace TeamAAS.Database.Attributes { /// /// 数据库提供者特性。 /// 标注在 IDatabase 实现类上,用于反射发现和注册。 /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public class DatabaseProviderAttribute : Attribute { /// /// 提供者类型标识(小写,如 mysql、sqlite、sqlserver) /// public string ProviderType { get; } /// /// 显示名称 /// public string DisplayName { get; set; } /// /// 是否需要服务器地址(文件型数据库如 SQLite 为 false) /// public bool RequiresServer { get; set; } = true; /// /// 描述 /// public string Description { get; set; } /// /// 提供者专属「配置/调试页」类型(必须是 System.Windows.FrameworkElement 子类,建议实现 /// TeamAAS.Database.UI.IDatabaseConfigPage 以接收产品数据库实例)。 /// 为 null(默认)时宿主使用内置通用页 DefaultDatabaseConfigPage。 /// 用法:[DatabaseProvider("mysql", ConfigPageType = typeof(MySqlConfigPage))] /// public Type ConfigPageType { get; set; } public DatabaseProviderAttribute(string providerType) { ProviderType = providerType?.ToLowerInvariant() ?? throw new ArgumentNullException(nameof(providerType)); DisplayName = providerType; } } }