yapsi.Extensions.DependencyInjection
2.0.1
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package yapsi.Extensions.DependencyInjection --version 2.0.1
NuGet\Install-Package yapsi.Extensions.DependencyInjection -Version 2.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="yapsi.Extensions.DependencyInjection" Version="2.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add yapsi.Extensions.DependencyInjection --version 2.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: yapsi.Extensions.DependencyInjection, 2.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install yapsi.Extensions.DependencyInjection as a Cake Addin #addin nuget:?package=yapsi.Extensions.DependencyInjection&version=2.0.1 // Install yapsi.Extensions.DependencyInjection as a Cake Tool #tool nuget:?package=yapsi.Extensions.DependencyInjection&version=2.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
yapsi
yet another pub-sub implementation
Provides simple interfaces for publishing/subscribing to generic data "packets".
Usage
using yapsi.Default;
// create a pipeline somewhere and make it available (through dependency injection for example)
// the generic parameter is the type of data being transported by the pipeline
var pipeline = new Pipeline<string>();
// ...somewhere you want to provide data from
var contract = pipeline.Bind();
// ...somewhere else where you want to consume the data
var subscription = pipeline.Subscribe();
subscription.Published += (sender, message) => Console.WriteLine(message);
// publish some data
contract.Publish("Hello from the other side");
contract.Publish("Hello again");
Run the yapsi.Example
project to see how it works.
You can add as many contracts and subscriptions you want, which means you could create a factory for injecting subscriptions into your services:
Program.cs
// ...
.ConfigureServices(services =>
{
// ...
services.AddSingleton<Pipeline<string>>();
services.AddTransient<IContract<string>>((sp) =>
{
var pipeline = sp.GetRequiredService<Pipeline<string>>();
return pipeline.Bind();
});
services.AddTransient<ISubscription<string>>((sp) =>
{
var pipeline = sp.GetRequiredService<Pipeline<string>>();
return pipeline.Subscribe();
});
services.AddHostedService<Worker>();
})
// ...
Worker.cs
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly ISubscription<string> _subscription;
private readonly IContract<string> _contract;
public Worker(ILogger<Worker> logger, ISubscription<string> subscription, IContract<string> contract)
{
_logger = logger;
_subscription = subscription;
_contract = contract;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
// ideally, you would have some service supplying data and another service consuming the data, but
// this example shows how the dependency injection works
_subscription.Published += (sender, data) =>
{
_logger.LogInformation("Received data from pipeline: {data}", data);
};
while (!stoppingToken.IsCancellationRequested)
{
_contract.Publish($"Worker running at: {DateTimeOffset.Now}");
await Task.Delay(1000, stoppingToken);
}
}
}
Run the yapsi.HostedExample
project to see this in action.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 5.0.0)
- yapsi (>= 2.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.