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;
}
}
}