Workes.ContentSystem
0.6.0
dotnet add package Workes.ContentSystem --version 0.6.0
NuGet\Install-Package Workes.ContentSystem -Version 0.6.0
<PackageReference Include="Workes.ContentSystem" Version="0.6.0" />
<PackageVersion Include="Workes.ContentSystem" Version="0.6.0" />
<PackageReference Include="Workes.ContentSystem" />
paket add Workes.ContentSystem --version 0.6.0
#r "nuget: Workes.ContentSystem, 0.6.0"
#:package Workes.ContentSystem@0.6.0
#addin nuget:?package=Workes.ContentSystem&version=0.6.0
#tool nuget:?package=Workes.ContentSystem&version=0.6.0
Workes.ContentSystem
Workes.ContentSystem is an engine-neutral backend for storing and organizing extensible content entries.
It is intended to be useful anywhere an application needs an ordered or structured stream of entries: console history, chat, logs, notifications, forum-like views, feeds, audit trails, and custom UI timelines.
Highlights
- Extensible content entries instead of one fixed message shape.
- Pluggable content structures, starting with a configurable sequence structure.
- Structure-driven manager resolution for sequence, keyed, and custom workflows.
- Structure-owned entry identity so different storage models can use the IDs that fit them.
- Optional change hooks for observing committed mutations.
- Entry, record, and built-in structure snapshots for portable serialization.
- A shared failure and exception model matching the style used in other Workes packages.
- Planned optional attachment points for export, bridges, and platform-specific integration.
Installation
Install the package from NuGet:
dotnet add package Workes.ContentSystem --version 0.6.0
Or add a package reference:
<PackageReference Include="Workes.ContentSystem" Version="0.6.0" />
The package targets .NET Standard 2.1.
Quick Example
The normal path is to create a structure, then let ContentSystem resolve its natural manager:
ContentManagerBase content = ContentManagers.ForStructure(
new ContentSequenceStructure(ContentOverflowPolicy.DropOldest(capacity: 200)));
if (content is ContentSequenceManager sequence)
{
sequence.Add(new PlainContentEntry(DateTimeOffset.UtcNow, "Server started."));
sequence.Add(new PlainContentEntry(DateTimeOffset.UtcNow, "Player joined: Workes"));
ContentEntryRecord first = sequence.Get(1);
}
foreach (ContentEntryRecord record in content.Records)
{
Console.WriteLine($"{record.Id}: {record.PlainText}");
}
If your code expects a specific manager from the start, use the typed resolver:
ContentSequenceManager sequence =
ContentManagers.ForStructure<ContentSequenceManager>(
new ContentSequenceStructure(ContentOverflowPolicy.DropOldest(capacity: 200)));
For caller-provided IDs, resolve a keyed structure:
var content = ContentManagers.ForStructure<KeyedContentManager<string>>(
new KeyedContentStructure<string>());
content.Add("server-started", new PlainContentEntry(DateTimeOffset.UtcNow, "Server started."));
ContentEntryRecord record = content.Get("server-started");
See the Quick Start for the beginner-first walkthrough.
Documentation
Start here:
Focused guides:
- Content Entries
- Content Identity
- Content Structures
- Content Managers
- Content Changes
- Content Snapshots
- Extension Authoring
- Failures
- Export And Attachments
See the Changelog for release history and migration-sensitive changes.
License
Workes.ContentSystem is available under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- 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.
Adds structure-created managers, sequence/keyed family bases, snapshot-family helpers, and flexible generated sequence IDs.