Currently, Stratum.IStratumPlugin exposes BepInEx.PluginInfo Info { get; }. This is nice because the metadata can be easily retrieved from BepInEx.BaseUnityPlugin.Info, but it requires that BepInEx provide it. This means it is impossible to unit test code that accesses this metadata (any code that logs plugins), and also creates artificial reliance on BepInEx.
A solution could be to create Stratum.IPluginMetadata, which contains all the data accessed by Stratum. A BepInEx-specific implementation of this interface could be created and used in Stratum.StratumPlugin, which provides the same developer experience as the original, but with the necessary abstraction.
Currently,
Stratum.IStratumPluginexposesBepInEx.PluginInfo Info { get; }. This is nice because the metadata can be easily retrieved fromBepInEx.BaseUnityPlugin.Info, but it requires that BepInEx provide it. This means it is impossible to unit test code that accesses this metadata (any code that logs plugins), and also creates artificial reliance on BepInEx.A solution could be to create
Stratum.IPluginMetadata, which contains all the data accessed by Stratum. A BepInEx-specific implementation of this interface could be created and used inStratum.StratumPlugin, which provides the same developer experience as the original, but with the necessary abstraction.