HVO.Core
1.1.1
dotnet add package HVO.Core --version 1.1.1
NuGet\Install-Package HVO.Core -Version 1.1.1
<PackageReference Include="HVO.Core" Version="1.1.1" />
<PackageVersion Include="HVO.Core" Version="1.1.1" />
<PackageReference Include="HVO.Core" />
paket add HVO.Core --version 1.1.1
#r "nuget: HVO.Core, 1.1.1"
#:package HVO.Core@1.1.1
#addin nuget:?package=HVO.Core&version=1.1.1
#tool nuget:?package=HVO.Core&version=1.1.1
HVO.SDK
Shared .NET utilities and functional patterns used across all HVO projects.
Packages
| Package | Target | Description |
|---|---|---|
| HVO.Core | netstandard2.0 |
Result<T>, Option<T>, OneOf<T1..T4>, discriminated unions, guard clauses, extensions |
| HVO.Core.SourceGenerators | netstandard2.0 |
Roslyn source generators (e.g., [NamedOneOf] attribute) |
Installation
dotnet add package HVO.Core
dotnet add package HVO.Core.SourceGenerators
Quick Start
Result<T> — Railway-oriented error handling
using HVO.Core.Results;
public Result<Customer> GetCustomer(int id)
{
try
{
var customer = _repository.Find(id);
return customer != null
? Result<Customer>.Success(customer)
: Result<Customer>.Failure(new NotFoundException($"Customer {id} not found"));
}
catch (Exception ex)
{
return ex; // Implicit conversion to failure
}
}
// Usage
var result = GetCustomer(42);
var output = result.Match(
success: c => $"Found: {c.Name}",
failure: ex => $"Error: {ex.Message}");
Result<T, TEnum> — Typed error codes
using HVO.Core.Results;
public enum OrderError { NotFound, InvalidAmount, Unauthorized }
public Result<Order, OrderError> ValidateOrder(OrderRequest request)
{
if (request.Amount <= 0)
return OrderError.InvalidAmount; // Implicit conversion
return Result<Order, OrderError>.Success(new Order(request));
}
Option<T> — Safe optional values
using HVO.Core.Options;
public Option<string> GetSetting(string key)
{
return _config.TryGetValue(key, out var value)
? new Option<string>(value)
: Option<string>.None();
}
// Usage
var setting = GetSetting("timeout");
var value = setting.GetValueOrDefault("30"); // Returns "30" if None
OneOf<T1, T2> — Discriminated unions
using HVO.Core.OneOf;
OneOf<int, string> result = 42;
var output = result.Match(
i => $"Got integer: {i}",
s => $"Got string: {s}");
// output: "Got integer: 42"
Guard & Ensure — Input validation and state assertions
using HVO.Core.Utilities;
// Guard: validates input parameters (throws ArgumentException)
public void Process(string name, int count)
{
Guard.AgainstNullOrWhiteSpace(name);
Guard.AgainstNegativeOrZero(count, 0);
}
// Ensure: asserts internal state (throws InvalidOperationException)
public void Execute()
{
Ensure.That(_isInitialized, "Service must be initialized");
Ensure.NotNull(_connection, "Connection not established");
}
Extensions
using HVO.Core.Extensions;
// String extensions
"hello world".ToTitleCase(); // "Hello World"
"Hello World Test".RemoveWhitespace(); // "HelloWorldTest"
"Second".ToEnum<MyEnum>(); // MyEnum.Second
// Collection extensions
new[] { 1, 2, 3 }.ForEach(x => Console.Write(x));
items.DistinctBy(x => x.Id);
items.Shuffle();
// Enum extensions
MyEnum.Value.GetDescription(); // Returns [Description] attribute value
Compatibility
HVO.Core targets .NET Standard 2.0 for maximum compatibility:
- .NET Framework 4.8.1+
- .NET 8+
- .NET 10+
- Mono, Xamarin, Unity
Building
dotnet build
dotnet test
Documentation
| Document | Description |
|---|---|
| CONTRIBUTING.md | PR workflow, coding standards, branch naming |
| CHANGELOG.md | Release history and notable changes |
| Testing | Test projects, coverage settings, local commands |
| Pipeline Integration | CI workflow, tag-based publishing, coordination with telemetry |
Contributing
See CONTRIBUTING.md for PR workflow, coding standards, and how to run tests locally.
License
MIT
| 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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. 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.0
- System.Text.Json (>= 8.0.5)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on HVO.Core:
| Package | Downloads |
|---|---|
|
HVO.Iot.Devices
IoT device abstractions and implementations for GPIO, I2C, Sequent Microsystems HATs, and environmental sensors (MLX90614, SI1145, TSL2591). |
|
|
HVO.NinaClient
NINA (Nighttime Imaging 'N' Astronomy) API client — REST and WebSocket integration for camera, mount, dome, focuser, filter wheel, guider, rotator, safety monitor, flat device, sequencer, and imaging control. |
|
|
HVO.Weather.DavisVantagePro
Davis Vantage Pro weather station integration — LOOP packet parser, TCP client, and hardware-specific enumerations. |
GitHub repositories
This package is not used by any popular GitHub repositories.