Oakrey.Announcements
1.0.0
See the version list below for details.
dotnet add package Oakrey.Announcements --version 1.0.0
NuGet\Install-Package Oakrey.Announcements -Version 1.0.0
<PackageReference Include="Oakrey.Announcements" Version="1.0.0" />
<PackageVersion Include="Oakrey.Announcements" Version="1.0.0" />
<PackageReference Include="Oakrey.Announcements" />
paket add Oakrey.Announcements --version 1.0.0
#r "nuget: Oakrey.Announcements, 1.0.0"
#:package Oakrey.Announcements@1.0.0
#addin nuget:?package=Oakrey.Announcements&version=1.0.0
#tool nuget:?package=Oakrey.Announcements&version=1.0.0
Oakrey.Announcements
Overview
The Announcements project provides a mechanism for internal communication within an application through announcements. It includes interfaces for announcement publishers and subscribers, a factory for creating announcement publishers, and an example implementation demonstrating its usage.
Installation
You can install the package via NuGet Package Manager, Package Manager Console or the .NET CLI.
NuGet Package Manager
- Open your project in Visual Studio.
- Navigate to Tools > NuGet Package Manager > Manage NuGet Packages for Solution....
- Search for
Oakrey.Announcements
and click Install.
.NET CLI
Run the following command in your terminal:
dotnet add package Oakrey.Announcements
Package Manager Console
Run the following command in your Package Manager Console:
Install-Package Oakrey.Announcements
Usage
To use the announcement mechanism, follow these steps:
- Create a subscriber that implements the ISubscriber interface.
- Add the subscriber to the AnnouncementFactory.
- Create a publisher using the AnnouncementFactory.
- Publish announcements using the publisher.
The AnnouncementCommand class in the Demo project provides an example of how to set up and use the announcement mechanism.
Example
Here is a basic example of how to use the announcement mechanism:
using Oakrey.Announcements;
using System;
public class ExampleSubscriber : ISubscriber
{
public void Receive(Type module, IAnnouncement announcement)
{
Console.WriteLine($"Received announcement from {module.Name}: {announcement}");
}
}
public class Program
{
public static void Main()
{
// Create and add a subscriber
ExampleSubscriber subscriber = new ExampleSubscriber();
AnnouncementFactory.AddSubscriber(subscriber);
// Create a publisher
IPublisher publisher = AnnouncementFactory.GetPublisher<Program>();
// Publish an announcement
publisher.Publish(new StatusAnnouncement(Status.Connected));
// Clean up
AnnouncementFactory.RemoveSubscriber(subscriber);
}
}
public sealed class StatusAnnouncement : IAnnouncement
{
public Status Status { get; }
public StatusAnnouncement(Status status)
{
Status = status;
}
public override string ToString() => Status.ToString();
}
public enum Status
{
Disconnected,
Connected,
Error
}
Requirements
- .NET 8 or higher
Project Information
- Author: Oakrey
- Company: Oakrey
- License: MIT
- Repository: Git Repository
- Project URL: Project Website
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests to improve the package.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.