插件访问私有空间

... 大约 2 分钟

# 插件访问私有空间

每个插件都有属于自己的私有空间,通常体现为一个独立的目录用于储存插件自身的档案。

PluginBase.Context.Meta.SpaceDirectory 就是该目录位于磁盘的位置。

关于插件私有空间,你可以在PluginBase.Context中找到所有属于该插件自身的属性。

# 在这之前你需要了解...

# 配置文件

插件配置各自独立,与 HyperaiShell.App 的主程序配置文件分离。配置文件位于其私有空间所在目录。

提示

通常插件配置文件名是固定的,通常为 config.json

通过 PluginBase.Context.Configuration 即可访问到解析为 IConfiguration 对象的配置。

警告

该配置文件不会自动创建,文件不存在会带来异常,请在插件加载之前确保该文件存在并且内容正确!部分插件可以使用附带内容自动添加配置好的配置文件,使用插件包附带内容请参阅插件发布章节。

# 数据库

除了只读的配置文件,HyperaiShell 还提供基于 LiteDb 的数据库使用能力。操作数据库的对象位于 PluginBase.Context.Repository。数据库完全由 HyperaiShell 托管,无需插件开发者操心。

注意

由于 LiteDb 没有提供 IQueryable 实现,自带的 something IQueryable-like 无法被套娃套到 IQueryable 上,所以目前版本数据库部分依旧强依赖于 LiteDb 包。如需使用数据库功能,请手动添加 LiteDb 包引用到项目!

# 和 HyperaiShell 主程序的关系

HyperaiShell 为每一个插件提供配置访问和数据库访问服务,但同时自身也需要访问这些服务。当插件需要访问插件所拥有的配置和数据库时请从插件入口 PluginBase.Context 中索取。当插件入口类实例不可达时可以用 IPluginConfiguration<T>IPluginRepository<T> 索取对应的 IConfigurationIRepository 对象,其中 T 是实现 PluginBase 的插件入口类。

注意

直接在构造函数注入 IConfigurationIRepository 所获取的实例是 HyperaiShell 自身的,而非插件所拥有的,请不要随意读写这两个实例。

上次编辑于: 2020年7月24日 20:22