Skip to content

创建插件元数据类

ExampleMetaData.cs
csharp
// 示例代码
using ShadowPluginLoader.Attributes;
using ShadowPluginLoader.WinUI.Models;

namespace ShadowExample.Core.Plugins;

[ExportMeta]
public record ExampleMetaData : AbstractPluginMetaData
{
    [Meta(Required = true, PropertyGroupName = "Author")]
    public string Author { get; init; }
}

导出元数据

ExportMeta特性指明这个类是需要导出的元数据

你的元数据类必须使用ExportMeta

会自动导出为元数据定义文件给后续的插件使用

说明

关于元数据定义文件,可查阅: 元数据定义文件

继承

你的元数据类必须继承AbstractPluginMetaData

AbstractPluginMetaData是默认的插件元数据,包含以下内容:

IPluginMetaData.cs
csharp
internal interface IPluginMetaData
{
  /// <summary>插件ID</summary>
  string Id { get; init; }

  /// <summary>插件名称</summary>
  string Name { get; init; }

  /// <summary>插件DLL名称</summary>
  string DllName { get; init; }

  /// <summary>插件版本号</summary>
  string Version { get; init; }

  /// <summary>插件依赖</summary>
  string[] Dependencies { get; init; }

  /// <summary>加载优先值,越小越先加载</summary>
  int Priority { get; init; }

  /// <summary>注入点</summary>
  JsonNode? EntryPoints { get; init; }

  /// <summary>是否是内置插件</summary>
  bool BuiltIn { get; init; }
}

所以以上的你不需要设置,会自动继承

额外的元数据项

在上文的示例中,我们新增了一个元数据项Author

csharp
public string Author { get; init; }

注意

元数据项的额外配置

csharp
    [Meta(Required = true, PropertyGroupName = "Author")]
    public string Author { get; init; }

在上文中,我们使用了Meta特性

该特性用于配置我们的元数据项

可配置项类型默认值说明
Requiredbooltrue是否为必须项
Excludeboolfalse是否忽略该属性,忽略后该属性不会被导出到define文件中
Regexstring?null正则表达式,用于匹配该属性的值
PropertyGroupNamestring属性名称元数据的对应的MSBuild名称,大小写敏感
EntryPointNamestring注入点名称用于导入注入点,并且类型固定为Type或者Type[]
Nullableboolfalse是否允许该属性为null 通过类名是否有问号自动判断