![]() |
VOOZH | about |
dotnet add package Hmz.Core.SharedKernel --version 0.1.7
NuGet\Install-Package Hmz.Core.SharedKernel -Version 0.1.7
<PackageReference Include="Hmz.Core.SharedKernel" Version="0.1.7" />
<PackageVersion Include="Hmz.Core.SharedKernel" Version="0.1.7" />Directory.Packages.props
<PackageReference Include="Hmz.Core.SharedKernel" />Project file
paket add Hmz.Core.SharedKernel --version 0.1.7
#r "nuget: Hmz.Core.SharedKernel, 0.1.7"
#:package Hmz.Core.SharedKernel@0.1.7
#addin nuget:?package=Hmz.Core.SharedKernel&version=0.1.7Install as a Cake Addin
#tool nuget:?package=Hmz.Core.SharedKernel&version=0.1.7Install as a Cake Tool
The shared kernel library for the Hmz ecosystem providing core abstractions, utilities, and domain building blocks that serve as the foundation for all Hmz projects.
This project contains reusable patterns and utilities based on Domain-Driven Design (DDD) principles and Clean Architecture. It provides a consistent foundation for building domain-driven applications within the Hmz family of projects.
Leverage Ardalis.GuardClauses for concise and expressive input validation:
Guard.Against.Null(input);
Guard.Against.NullOrEmpty(text);
Guard.Against.OutOfRange(age, min: 0, max: 120);
Implement consistent error handling with Ardalis.Result:
public Result<User> CreateUser(string email)
{
Guard.Against.NullOrEmpty(email);
var user = new User(email);
return Result.Success(user);
}
Build complex queries in a domain-driven way with Ardalis.Specification and Entity Framework Core integration:
public class ActiveUserSpec : Specification<User>
{
public ActiveUserSpec()
{
Query.Where(u => u.IsActive);
}
}
var users = await repository.ListAsync(new ActiveUserSpec());
Type-safe enumerations with Ardalis.SmartEnum:
public class UserStatus : SmartEnum<UserStatus>
{
public static readonly UserStatus Active = new("Active", 1);
public static readonly UserStatus Inactive = new("Inactive", 2);
private UserStatus(string name, int value) : base(name, value) { }
}
Utilities for testing HTTP clients with Ardalis.HttpClientTestExtensions.
Introspect and list registered services with Ardalis.ListStartupServices.
Seamless integration with ASP.NET Core through Ardalis.Result.AspNetCore.
Hmz.Core.SharedKernel0.1.0dotnet add package Hmz.Core.SharedKernel
using Ardalis.GuardClauses;
using Ardalis.Result;
public class OrderService
{
public Result<Order> CreateOrder(OrderRequest request)
{
Guard.Against.Null(request);
Guard.Against.NullOrEmpty(request.CustomerId);
var order = new Order(request.CustomerId);
return Result.Success(order);
}
}
All dependencies are managed through Directory.Packages.props at the solution level:
Ardalis.GuardClauses - Guard clauses and validationArdalis.HttpClientTestExtensions - HTTP client testing utilitiesArdalis.ListStartupServices - Service introspectionArdalis.Result - Result patternArdalis.Result.AspNetCore - ASP.NET Core integrationArdalis.SharedKernel - Shared kernel abstractionsArdalis.SmartEnum - Smart enumerationsArdalis.Specification - Specification patternArdalis.Specification.EntityFrameworkCore - EF Core integrationWhen extending the SharedKernel:
Validation First: Always validate inputs using Guard clauses
Guard.Against.NullOrEmpty(name, nameof(name));
Consistent Error Handling: Use Result pattern for operations that can fail
return Result.Failure("User not found");
Domain-Driven Queries: Leverage Specification pattern for complex queries
var spec = new UsersByRoleSpec(role);
var users = await repository.ListAsync(spec);
Type-Safe Enums: Use SmartEnum for status and state enumerations
if (status == OrderStatus.Pending)
{
// Handle pending order
}
dotnet build
dotnet test
dotnet pack --configuration Release
The SharedKernel follows these architectural principles:
When adding new features to the SharedKernel:
For questions or issues regarding the SharedKernel, please refer to the main documentation or contact the Hmz development team.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. 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. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.