DatabaseProviderAttribute.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. namespace TeamAAS.Database.Attributes
  3. {
  4. /// <summary>
  5. /// 数据库提供者特性。
  6. /// 标注在 IDatabase 实现类上,用于反射发现和注册。
  7. /// </summary>
  8. [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
  9. public class DatabaseProviderAttribute : Attribute
  10. {
  11. /// <summary>
  12. /// 提供者类型标识(小写,如 mysql、sqlite、sqlserver)
  13. /// </summary>
  14. public string ProviderType { get; }
  15. /// <summary>
  16. /// 显示名称
  17. /// </summary>
  18. public string DisplayName { get; set; }
  19. /// <summary>
  20. /// 是否需要服务器地址(文件型数据库如 SQLite 为 false)
  21. /// </summary>
  22. public bool RequiresServer { get; set; } = true;
  23. /// <summary>
  24. /// 描述
  25. /// </summary>
  26. public string Description { get; set; }
  27. /// <summary>
  28. /// 提供者专属「配置/调试页」类型(必须是 System.Windows.FrameworkElement 子类,建议实现
  29. /// TeamAAS.Database.UI.IDatabaseConfigPage 以接收产品数据库实例)。
  30. /// 为 null(默认)时宿主使用内置通用页 DefaultDatabaseConfigPage。
  31. /// 用法:[DatabaseProvider("mysql", ConfigPageType = typeof(MySqlConfigPage))]
  32. /// </summary>
  33. public Type ConfigPageType { get; set; }
  34. public DatabaseProviderAttribute(string providerType)
  35. {
  36. ProviderType = providerType?.ToLowerInvariant() ?? throw new ArgumentNullException(nameof(providerType));
  37. DisplayName = providerType;
  38. }
  39. }
  40. }