![]() |
VOOZH | about |
dotnet add package PolyhydraGames.Core.Models --version 1.0.2.18
NuGet\Install-Package PolyhydraGames.Core.Models -Version 1.0.2.18
<PackageReference Include="PolyhydraGames.Core.Models" Version="1.0.2.18" />
<PackageVersion Include="PolyhydraGames.Core.Models" Version="1.0.2.18" />Directory.Packages.props
<PackageReference Include="PolyhydraGames.Core.Models" />Project file
paket add PolyhydraGames.Core.Models --version 1.0.2.18
#r "nuget: PolyhydraGames.Core.Models, 1.0.2.18"
#:package PolyhydraGames.Core.Models@1.0.2.18
#addin nuget:?package=PolyhydraGames.Core.Models&version=1.0.2.18Install as a Cake Addin
#tool nuget:?package=PolyhydraGames.Core.Models&version=1.0.2.18Install as a Cake Tool
A .NET utility library providing common models, helpers, and reactive extensions for the PolyhydraGames ecosystem.
PolyhydraGames.Core.Models is a shared utility library containing common DTOs, caching, serialization helpers, and reactive extensions used across multiple projects. It eliminates duplication by centralizing frequently-needed model types and helpers.
| Category | Type | Purpose |
|---|---|---|
| Caching | Cache<T> |
Simple in-memory cache with automatic expiration |
CacheHelper |
Utility methods for cache management | |
| Data | CSVExtensions |
CSV parsing and generation extension methods |
JsonHelper |
JSON serialization/deserialization helpers | |
| Identifiers | IStronglyTypedId<TValue> |
Marker contract for primitive-backed identifier value objects |
IGuidId |
Common contract for GUID-backed identifiers | |
IStringId |
Common contract for string-backed identifiers | |
IOptionalStringId |
Common contract for string-backed identifiers where empty means missing | |
StringIdHelpers |
Shared normalization helpers for optional string identifiers | |
StronglyTypedId |
Factory and parse helpers for primitive-backed identifier value objects | |
StronglyTypedGuidConverter<TId> |
JSON converter for GUID-backed identifier structs | |
StronglyTypedStringConverter<TId> |
JSON converter for string-backed identifier structs | |
StronglyTypedOptionalStringConverter<TId> |
JSON converter for optional string-backed identifier structs | |
StronglyTypedInt32Converter<TId> |
JSON converter for int-backed identifier structs | |
StronglyTypedInt64Converter<TId> |
JSON converter for long-backed identifier structs | |
StronglyTypedIdJsonConverterFactory |
JSON converter factory for supported strongly typed ID backing types | |
| Media | LocalMediaFile |
Shared model for local/NAS-backed media files |
MediaScanRoot |
Shared model for filesystem or NAS scan roots | |
MediaTechnicalMetadata |
Shared technical metadata container for video/audio/image/ROM details | |
MediaRelationshipKind |
Shared directional relationship kind enum | |
MediaRelationshipEndpointKind |
Shared entity kind enum for relationship endpoints | |
MediaRelationship |
Shared directional relationship model between catalog and asset entities | |
MediaRelationshipEndpoint |
Shared entity reference used by media relationships | |
MediaQueueItemState |
Shared lifecycle state for playback queue items | |
MediaPlaybackQueueRequest |
Shared request for queueing media playback items | |
MediaPlaybackQueue |
Shared playback queue snapshot | |
ApiOperationResult |
Shared success/failure result envelope | |
ApiOperationResult<T> |
Shared typed success/failure result envelope | |
ApiReadinessSummary |
Shared readiness summary for operator surfaces | |
PagedRequest |
Shared page-based query request contract | |
PagedResult<T> |
Shared page-based response contract | |
MediaScanProgress |
Shared scan-progress snapshot for media indexing jobs | |
MediaScanSummary |
Shared scan summary for media indexing jobs | |
MediaAssetReference |
Shared portable media asset reference model | |
MediaProviderReference |
Shared portable external provider reference model | |
MediaPlaylist |
Shared playlist/playout manifest for media, clipping, and broadcast consumers | |
MediaPathHelpers |
Pure path, extension, and media-kind normalization helpers | |
| Reactive | ObservableExtensions |
Custom reactive extensions for System.Reactive |
ObservableFileMonitor |
File system watcher wrapper using observables | |
SubjectObservable<T> |
Subject-based observable implementation | |
| Enums | EnumDescription |
Enum metadata and display name resolution |
EnumDescriptionExtensions |
Extension methods for enum description lookup | |
| State | OneTimeUseBool |
Boolean that flips from true to false after first read |
ToggleBoolean |
State toggle helper | |
InjectableSave |
Save mechanism for dependency-injectable services | |
| Network | PortReply |
Network port reply model |
PortReplyExtensions |
Extension methods for port reply handling | |
| Utilities | TimeStamp |
Timestamp wrapper with formatting helpers |
DelayTimer |
Timer utility for delayed operations | |
IPortListener |
Interface for port listening services |
var cache = new Cache<MyData>(myData, TimeSpan.FromMinutes(5));
var result = cache.Value; // null/default if expired
var monitor = new ObservableFileMonitor("path/to", "file.txt");
monitor.Observable.Subscribe(path => Console.WriteLine($"File changed: {path}"));
monitor.Initialize();
var description = new EnumDescription<MyEnum>(
MyEnum.SomeValue,
"Some Value",
"Display description");
var records = csvContent.FromCSV<MyRecord>();
var output = records.ToCSV();
var json = myObject.ToJson();
var obj = json.FromJson<MyType>();
<PackageReference Include="PolyhydraGames.Core.Models" Version="1.0.2.10" />
The package is published publicly on nuget.org. New main builds publish 1.0.2.<run_number> when the repository has a valid NUGET_API_KEY secret.
net8.0 and net9.0 (multi-target)net10.0PolyhydraGames.Core.Interfaces (v2.0.0.45)PolyhydraGames.Extensions (v2.1.1.78)System.Reactive (v6.1.0)# Build the solution
dotnet build PolyhydraGames.Core.Models.sln
# Run tests
dotnet test Tests/PolyhydraGames.Core.Models.Test.csproj
using PolyhydraGames.Core.Models;
using PolyhydraGames.Core.Models.Identifiers;
using PolyhydraGames.Core.Models.Media;
// Now use any of the types listed above
Detailed documentation can be found in the following sections:
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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. |
Showing the top 5 NuGet packages that depend on PolyhydraGames.Core.Models:
| Package | Downloads |
|---|---|
|
PolyhydraGames.OAuth.Core
Package Description |
|
|
PolyhydraGames.Api.Fitbit
Package Description |
|
|
PolyhydraGames.GamePlayer.Core
Package Description |
|
|
PolyhydraGames.Twitch
Twitch integration library used by ChannelCheevos and related services — wraps TwitchLib.Api, TwitchLib.Client, and TwitchLib.EventSub for internal Polyhydra services. |
|
|
PolyhydraGames.Godot.Core
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.2.18 | 200 | 6/13/2026 |
| 1.0.2.17 | 235 | 6/11/2026 |
| 1.0.2.16 | 505 | 6/5/2026 |
| 1.0.2.15 | 170 | 5/30/2026 |
| 1.0.2.14 | 107 | 5/29/2026 |
| 1.0.2.13 | 107 | 5/26/2026 |
| 1.0.2.12 | 98 | 5/21/2026 |
| 1.0.2.11 | 574 | 5/20/2026 |
| 1.0.2.10 | 335 | 5/18/2026 |
| 1.0.2.9 | 105 | 5/18/2026 |
| 1.0.2.8 | 267 | 5/17/2026 |
| 1.0.2.7 | 145 | 5/12/2026 |
| 1.0.2.6 | 96 | 5/12/2026 |
| 1.0.1.25 | 88 | 6/7/2026 |
| 1.0.1.24 | 94 | 5/20/2026 |
| 1.0.1.23 | 97 | 5/18/2026 |
| 1.0.1.22 | 96 | 5/17/2026 |
| 1.0.1.21 | 91 | 5/15/2026 |
| 1.0.1.20 | 449 | 5/8/2026 |
| 1.0.1.19 | 424 | 5/6/2026 |