This document provides a comprehensive overview of all features and components in the ktsu.Semantics library.
- Core Components
- Semantic Strings
- Semantic Quantities
- Path System
- Validation System
- Performance Features
The Semantics library consists of six main areas:
- Semantic Strings - Type-safe string wrappers with validation
- Physics Quantities System - Complete physics library with 80+ quantities across 8 domains
- Physical Constants - Centralized, type-safe access to fundamental and derived constants
- Path System - Comprehensive file system path handling
- Validation System - 50+ validation attributes across multiple categories
- Performance Utilities - Optimizations for high-performance scenarios
Transform primitive string obsession into strongly-typed domain models:
[IsEmail]
public sealed record EmailAddress : SemanticString<EmailAddress> { }
[HasLength(8, 50), IsNotEmpty]
public sealed record UserId : SemanticString<UserId> { }
// Usage with factory pattern
var emailFactory = new SemanticStringFactory<EmailAddress>();
var email = emailFactory.Create("user@example.com");
// Compile-time safety
public void SendEmail(EmailAddress to, UserId userId) { /* ... */ }
// SendEmail(userId, email); // β Won't compile!A comprehensive physics library with 80+ quantities across 8 scientific domains featuring:
- Type-safe arithmetic with dimensional analysis
- Automatic unit conversions with compile-time safety
- Physics relationships as operators (F = ma, E = mcΒ², etc.)
- Physical constants integrated throughout
- Generic numeric types (double, float, decimal) support
Position, velocity, acceleration, force, pressure, energy, power, momentum, torque, angular velocity, angular acceleration, moment of inertia, density, and more.
Voltage, current, resistance, power, charge, capacitance, inductance, electric field, magnetic field, and electrical properties.
Temperature, heat, entropy, thermal conductivity, heat capacity, thermal expansion, and thermodynamic properties.
Amount of substance, molarity, reaction rates, pH, molar mass, activation energy, and chemical kinetics.
Sound pressure, intensity, frequency, wavelength, acoustic impedance, loudness, pitch, and audio metrics.
Radioactive activity, absorbed dose, equivalent dose, exposure, and nuclear cross-sections.
Luminous intensity, flux, illuminance, luminance, refractive index, and optical power.
Viscosity, flow rates, Reynolds numbers, bulk modulus, and fluid properties.
// Create quantities with dimensional safety
var force = Force<double>.FromNewtons(100.0);
var distance = Length<double>.FromMeters(5.0);
var time = Time<double>.FromSeconds(2.0);
// Physics relationships as operators
var work = force * distance; // W = Fβ
d (Energy)
var power = work / time; // P = W/t (Power)
var velocity = distance / time; // v = d/t (Velocity)
// Automatic unit conversions
Console.WriteLine(work.ToKilowattHours()); // 1.389e-7 kWh
Console.WriteLine(power.ToHorsepower()); // 6.705e-5 hp
// Type safety prevents errors
// var invalid = force + time; // β Compiler error!
// Complex calculations with multiple domains
var temp = Temperature<double>.FromCelsius(25.0);
var pressure = Pressure<double>.FromPascals(101325.0);
var volume = Volume<double>.FromLiters(22.4);
var gasConstant = PhysicalConstants.Generic.GasConstant<double>();
// Ideal gas law: PV = nRT
var moles = (pressure * volume) / (gasConstant * temp);Centralized, type-safe access to 100+ physical constants across all domains:
// Fundamental constants (CODATA 2018)
var c = PhysicalConstants.Generic.SpeedOfLight<double>(); // 299,792,458 m/s
var h = PhysicalConstants.Generic.PlanckConstant<double>(); // 6.626070Γ10β»Β³β΄ Jβ
s
var Na = PhysicalConstants.Generic.AvogadroNumber<double>(); // 6.022140Γ10Β²Β³ molβ»ΒΉ
// Derived constants with automatic type conversion
var g = PhysicalConstants.Generic.StandardGravity<float>(); // 9.80665 m/sΒ²
var R = PhysicalConstants.Generic.GasConstant<decimal>(); // 8.314462618 J/(molβ
K)
// Domain-specific constants
var rho = PhysicalConstants.Generic.StandardAirDensity<double>(); // 1.225 kg/mΒ³
var c_sound = PhysicalConstants.Generic.SoundSpeedInAir<double>(); // 343 m/sComprehensive polymorphic path handling with 11 different path types:
IPath (base)
βββ IAbsolutePath : IPath
βββ IRelativePath : IPath
βββ IFilePath : IPath
βββ IDirectoryPath : IPath
βββ IAbsoluteFilePath : IFilePath, IAbsolutePath
βββ IRelativeFilePath : IFilePath, IRelativePath
βββ IAbsoluteDirectoryPath : IDirectoryPath, IAbsolutePath
βββ IRelativeDirectoryPath : IDirectoryPath, IRelativePath
IFileName / IFileExtension (separate hierarchies)
var filePath = AbsoluteFilePath.FromString<AbsoluteFilePath>(@"C:\app\config.json");
// Rich path operations
Console.WriteLine(filePath.FileName); // config.json
Console.WriteLine(filePath.FileExtension); // .json
Console.WriteLine(filePath.DirectoryPath); // C:\app
Console.WriteLine(filePath.Exists); // True/False
// Polymorphic collections
List<IPath> paths = [
AbsoluteFilePath.FromString<AbsoluteFilePath>(@"C:\data.txt"),
RelativeDirectoryPath.FromString<RelativeDirectoryPath>(@"temp\logs")
];
var files = paths.OfType<IFilePath>().ToList();The library includes 50+ validation attributes across multiple categories:
IsEmailAddress- Email format validationRegexMatch(pattern)- Custom regex patternsStartsWith/EndsWith- Prefix/suffix validationContains- Substring validationIsBase64- Base64 encoding validation
IsEmptyOrWhitespace- Empty/whitespace validationHasNonWhitespaceContent- Non-whitespace requirementIsSingleLine/IsMultiLine- Line count validationHasExactLines/HasMinimumLines/HasMaximumLines- Line counts
IsBoolean- Boolean representation validationIsDateTime- Date/time format validationIsDecimal/IsDouble/IsInt32- Numeric validationIsGuid- GUID format validationIsIpAddress- IP address validationIsTimeSpan- Time span validationIsUri- URI format validationIsVersion- Version string validation
IsPositive/IsNegative- Sign validationIsInRange(min, max)- Value range validation
IsPath- Path format validationIsAbsolutePath/IsRelativePath- Path type validationIsFilePath/IsDirectoryPath- Path category validationDoesExist- File system existence validation
// All must pass (default)
[ValidateAll]
[IsNotEmpty, IsEmail, HasLength(5, 100)]
public sealed record BusinessEmail : SemanticString<BusinessEmail> { }
// Any can pass
[ValidateAny]
[IsEmail, IsUri]
public sealed record ContactMethod : SemanticString<ContactMethod> { }The library is optimized for high-performance scenarios:
- Span-based Operations - Minimal memory allocations
- Pooled String Builders - Reused StringBuilder instances
- Interned Path Strings - Memory optimization for common paths
- Zero-cost Conversions - Efficient implicit conversions
- Lazy Validation - Validation only when needed
// Pooled string builder for high-performance string operations
public class PooledStringBuilder : IDisposable
// Interned strings for common paths
public static class InternedPathStrings
// Span-based path utilities for minimal allocations
public static class SpanPathUtilitiesservices.AddTransient<ISemanticStringFactory<EmailAddress>, SemanticStringFactory<EmailAddress>>();
public class UserService
{
private readonly ISemanticStringFactory<EmailAddress> _emailFactory;
public UserService(ISemanticStringFactory<EmailAddress> emailFactory)
{
_emailFactory = emailFactory;
}
}modelBuilder.Entity<User>()
.Property(u => u.Email)
.HasConversion(
email => email.ToString(),
value => EmailAddress.FromString<EmailAddress>(value));[HttpPost]
public IActionResult CreateUser([FromBody] CreateUserRequest request)
{
if (!_emailFactory.TryCreate(request.Email, out var email))
{
return BadRequest("Invalid email format");
}
var user = new User(email);
return Ok(user);
}This library transforms primitive-obsessed code into strongly-typed, self-validating domain models with comprehensive validation, complete physics capabilities across all major scientific domains, and excellent performance characteristics. With 80+ physics quantities, 100+ physical constants, and 50+ validation attributes, it provides enterprise-ready solutions for scientific computing, engineering applications, and domain modeling.