![]() |
VOOZH | about |
dotnet add package OutWit.Common.Plugins.Abstractions --version 1.2.0
NuGet\Install-Package OutWit.Common.Plugins.Abstractions -Version 1.2.0
<PackageReference Include="OutWit.Common.Plugins.Abstractions" Version="1.2.0" />
<PackageVersion Include="OutWit.Common.Plugins.Abstractions" Version="1.2.0" />Directory.Packages.props
<PackageReference Include="OutWit.Common.Plugins.Abstractions" />Project file
paket add OutWit.Common.Plugins.Abstractions --version 1.2.0
#r "nuget: OutWit.Common.Plugins.Abstractions, 1.2.0"
#:package OutWit.Common.Plugins.Abstractions@1.2.0
#addin nuget:?package=OutWit.Common.Plugins.Abstractions&version=1.2.0Install as a Cake Addin
#tool nuget:?package=OutWit.Common.Plugins.Abstractions&version=1.2.0Install as a Cake Tool
Writing a plugin? Read first. It covers the full author workflow: csproj setup, nuspec packaging,
build/*.targetsfor consumer-side file copy, per-plugin configuration, module folder conventions, and known gotchas. This README documents just the abstractions surface.
This package contains the minimal set of shared interfaces, base classes, and attributes required to build plugins compatible with the OutWit.Common.Plugins system. It is intentionally lightweight to ensure your plugins do not depend on the main loader logic.
IWitPlugin: The core interface that every plugin must implement. It defines the plugin lifecycle with methods for initialization, post-initialization, and unloading.WitPluginBase: An abstract base class that provides a default empty implementation of IWitPlugin for convenience. You can override only the methods you need.[WitPluginManifestAttribute]: A mandatory attribute for any plugin class. It defines essential metadata like the plugin's unique name, version, and load priority, making it discoverable by the plugin loader.[WitPluginDependencyAttribute]: An optional attribute that can be used multiple times to declare dependencies on other plugins. It allows the loader to validate that required plugins are present before loading.Add the package to your plugin's class library project using NuGet.
dotnet add package OutWit.Common.Plugins.Abstractions
OutWit.Common.Plugins.Abstractions.WitPluginBase (or directly implements IWitPlugin).[WitPluginManifestAttribute] to your class, specifying a unique name.[WitPluginDependencyAttribute] attributes to declare dependencies.Initialize and OnInitialized methods to register services and execute logic.C#
using Microsoft.Extensions.DependencyInjection;
using OutWit.Common.Plugins.Abstractions;
using OutWit.Common.Plugins.Abstractions.Attributes;
using OutWit.Common.Plugins.Abstractions.Interfaces;
using System;
[WitPluginManifest("MyFirstPlugin", Version = "1.0.0", Priority = 100)]
[WitPluginDependency("AnotherPlugin", MinimumVersion = "2.1.0")]
public class MyFirstPlugin : WitPluginBase
{
// Use for registering services in DI.
public override void Initialize(IServiceCollection services)
{
// Register services in the DI container
services.AddSingleton<MyService>();
}
// Called after all plugins have been initialized.
public override void OnInitialized(IServiceProvider serviceProvider)
{
// Logic that runs after all plugins are loaded
var myService = serviceProvider.GetRequiredService<MyService>();
myService.Run();
}
// Called just before the plugin is about to be unloaded.
public override void OnUnloading()
{
// Perform cleanup here
}
}
Licensed under the Apache License, Version 2.0. See LICENSE.
If you use OutWit.Common.Plugins.Abstractions in a product, a mention is appreciated (but not required), for example: "Powered by OutWit.Common.Plugins.Abstractions (https://ratner.io/)".
"OutWit" and the OutWit logo are used to identify the official project by Dmitry Ratner.
You may:
You may not:
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 is compatible. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 5 NuGet packages that depend on OutWit.Common.Plugins.Abstractions:
| Package | Downloads |
|---|---|
|
OutWit.Common.Plugins
A robust and flexible plugin system for .NET. Features dynamic discovery from directories, sophisticated dependency resolution (validates versions and detects circular dependencies), and isolated loading via AssemblyLoadContext to enable hot-reloading and unloading of plugins. |
|
|
OutWit.Engine.Interfaces
Core interface definitions and contracts for the OmnibusCloud distributed computing system. Provides interfaces for activities, variables, jobs, processing, benchmarking, and plugin development. |
|
|
OutWit.Shared.Logging.Provider.Loki
Grafana Loki log provider plugin for OutWit hosts. Thin wrapper over OutWit.Common.Logging.Loki — registers an ILogQueryProvider that translates neutral LogQuery requests into LogQL and dispatches them against /loki/api/v1/*. Drop into the host's @Logging folder and set Logging__ProviderKey=Loki. |
|
|
OutWit.Shared.Logging.Provider.NewRelic
NewRelic NerdGraph log provider plugin for OutWit hosts. Thin wrapper over OutWit.Common.Logging.NewRelic — registers an ILogQueryProvider that queries NewRelic Logs via NRQL. Drop into the host's @Logging folder and set Logging__ProviderKey=NewRelic. |
|
|
OutWit.Shared.Logging.Providers
Plugin contract for OutWit log query providers. Defines ILogProviderPlugin (a marker over IWitPlugin) so a host can load NewRelic / Loki / file-scanning log backends via WitPluginLoader. Also defines HostLoggingInfo — a documented side-channel that lets file-scanning plugins discover the host's log directory without duplicating Serilog config. |
This package is not used by any popular GitHub repositories.