插件访问私有空间
# 插件访问私有空间
每个插件都有属于自己的私有空间,通常体现为一个独立的目录用于储存插件自身的档案。
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>
索取对应的 IConfiguration
和 IRepository
对象,其中 T
是实现 PluginBase
的插件入口类。
注意
直接在构造函数注入 IConfiguration
和 IRepository
所获取的实例是 HyperaiShell 自身的,而非插件所拥有的,请不要随意读写这两个实例。