Skip to content

SAIF.Framework.Common overview

Documentation context: Package library Documented via: .nuspec-referenced package (Common/SAIF.Common/SAIF.Framework.Common.nuspec)

SAIF.Framework.Common is a foundation, zero-dependency .NET Framework 4.6.2 utility library that supplies cross-cutting primitives — date/date-range semantics, string normalization and casing, validation result modelling, argument guards, sequence generation, serialization helpers, exception formatting, and logging contracts — for consumption by application and component layers above it in the SAIF stack (Stage 1 analysis, "Responsibility boundary").

Purpose

  • Supplies fail-fast argument guards, date/date-range reasoning, text normalization, validation-result modelling, in-memory sequence generation, JSON/XML serialization helpers, exception formatting, and console/file logging contracts — all as static/extension methods with no persisted state beyond a sequence generator's current value or a validation result's collections (Stage 1 analysis, "Functional groupings").
  • Consumed by SAIF MVC/web applications, console batch applications, and other component libraries that reference it as a foundation layer; it has zero outbound dependencies of its own, making it safely referenceable from any layer above it (Stage 1 analysis, "Responsibility boundary", "Design constraints").

Responsibilities

  • Fail-fast argument and precondition guarding (Enforce, GenericExtensions.IsNull/IfNullThrow).
  • Date and date-range modelling: validity, overlap, contiguity, EDI/Julian encoding (DateRange, NullableDateRange, DateRangeExtensions, DateMaker, Julian).
  • Text normalization: casing, truncation, character-class filtering, Unicode-to-ASCII folding, truthy-string parsing (StringExtensions, StringUtilities, BooleanExtensions).
  • Validation-result modelling and exception surfacing (ValidationResult, ValidationFailure, SaifValidationException).
  • Contextual (view-routing) exception carrying for a consuming presentation layer (ContextException and its subclasses).
  • In-memory monotonic sequence generation (Sequence, LongSequence).
  • JSON/XML serialization, stream-to-byte-array conversion, MD5 hashing, and binary header search (Serializer, FileExtensions, ByteExtensions).
  • Console/file logging contract definitions and exception-chain formatting for logs (IConsoleLogService, ILogWriter, ExceptionExtensions).
  • Reflection-based property discovery and assignment (Reflector, ExpressionExtensions).
  • LINQ/collection gap-filling and dictionary merge/upsert (IEnumerableExtensions, DictionaryExtensions).

Key components

  • Enforce: Central fail-fast argument/precondition guard used throughout the library.
  • DateRange / DateRangeExtensions: Core date-interval type and its overlap/contiguity/membership algorithms.
  • StringExtensions / StringUtilities: The library's text-normalization surface.
  • ValidationResult / SaifValidationException: Validation-outcome modelling and exception surfacing.
  • Serializer: JSON/XML round-tripping helpers.
  • IConsoleLogService / ILogWriter: Logging contracts implemented by consumers, not this library.

Sources

  • Common/SAIF.Common/SAIF.Framework.Common.csproj
  • Common/SAIF.Common/SAIF.Framework.Common.nuspec
  • SAIF.Framework.Common.sln
  • Common/SAIF.Common/Classes/Enforce.cs
  • Common/SAIF.Common/Classes/DateRange.cs
  • Common/SAIF.Common/Classes/NullableDateRange.cs
  • Common/SAIF.Common/Extensions/DateRangeExtensions.cs
  • Common/SAIF.Common/Classes/DateMaker.cs
  • Common/SAIF.Common/Classes/Julian.cs
  • Common/SAIF.Common/Extensions/StringExtensions.cs
  • Common/SAIF.Common/Utility/StringUtilities.cs
  • Common/SAIF.Common/Extensions/BooleanExtensions.cs
  • Common/SAIF.Common/Classes/ValidationResult.cs
  • Common/SAIF.Common/Classes/ValidationFailure.cs
  • Common/SAIF.Common/Classes/SaifValidationException.cs
  • Common/SAIF.Common/Classes/ContextException.cs
  • Common/SAIF.Common/Classes/Sequence.cs
  • Common/SAIF.Common/Classes/LongSequence.cs
  • Common/SAIF.Common/Classes/Serializer.cs
  • Common/SAIF.Common/Extensions/FileExtensions.cs
  • Common/SAIF.Common/Extensions/ByteExtensions.cs
  • Common/SAIF.Common/Interfaces/IConsoleLogService.cs
  • Common/SAIF.Common/Interfaces/ILogWriter.cs
  • Common/SAIF.Common/Extensions/ExceptionExtensions.cs
  • Common/SAIF.Common/Classes/Reflector.cs
  • Common/SAIF.Common/Extensions/ExpressionExtensions.cs
  • Common/SAIF.Common/Extensions/IEnumerableExtensions.cs
  • Common/SAIF.Common/Extensions/DictionaryExtensions.cs