FunctionalDdd.PrimitiveValueObjectGenerator
3.0.0-alpha.44
dotnet add package FunctionalDdd.PrimitiveValueObjectGenerator --version 3.0.0-alpha.44
NuGet\Install-Package FunctionalDdd.PrimitiveValueObjectGenerator -Version 3.0.0-alpha.44
<PackageReference Include="FunctionalDdd.PrimitiveValueObjectGenerator" Version="3.0.0-alpha.44" />
<PackageVersion Include="FunctionalDdd.PrimitiveValueObjectGenerator" Version="3.0.0-alpha.44" />
<PackageReference Include="FunctionalDdd.PrimitiveValueObjectGenerator" />
paket add FunctionalDdd.PrimitiveValueObjectGenerator --version 3.0.0-alpha.44
#r "nuget: FunctionalDdd.PrimitiveValueObjectGenerator, 3.0.0-alpha.44"
#:package FunctionalDdd.PrimitiveValueObjectGenerator@3.0.0-alpha.44
#addin nuget:?package=FunctionalDdd.PrimitiveValueObjectGenerator&version=3.0.0-alpha.44&prerelease
#tool nuget:?package=FunctionalDdd.PrimitiveValueObjectGenerator&version=3.0.0-alpha.44&prerelease
CommonValueObjectGenerator
Roslyn source generator for creating strongly-typed value objects with automatic validation and IParsable support.
What It Does
Automatically generates boilerplate code for classes inheriting from RequiredString or RequiredGuid:
// You write this:
public partial class OrderId : RequiredGuid
{
}
// Generator creates:
// - TryCreate(Guid?) method returning Result<OrderId>
// - TryCreate(string?) method returning Result<OrderId>
// - NewUnique() method for new GUIDs
// - Parse(string, IFormatProvider?) method (IParsable)
// - TryParse(string?, IFormatProvider?, out OrderId) method (IParsable)
// - Explicit cast operator from Guid
// - Validation error messages
Installation
This package is included automatically when you install FunctionalDDD.CommonValueObjects:
dotnet add package FunctionalDDD.CommonValueObjects
Note: Both packages are required - the main package provides base classes, this generator creates the implementations.
Generated API
For RequiredString Classes
public partial class ProductName : RequiredString
{
}
// Generated members:
ProductName.TryCreate(string?) // Result<ProductName>
ProductName.Parse(string, IFormatProvider?) // ProductName (throws)
ProductName.TryParse(string?, IFormatProvider?, out...) // bool
(ProductName)"ABC" // Explicit cast
For RequiredGuid Classes
public partial class UserId : RequiredGuid
{
}
// Generated members:
UserId.NewUnique() // New GUID
UserId.TryCreate(Guid?) // Result<UserId>
UserId.TryCreate(string?) // Result<UserId>
UserId.Parse(string, IFormatProvider?) // UserId (throws)
UserId.TryParse(string?, IFormatProvider?, out...) // bool
(UserId)Guid.NewGuid() // Explicit cast
Requirements
- .NET Standard 2.0 compatible (source generators must target netstandard2.0)
- C# 9.0+ for partial class support
- Requires
FunctionalDDD.CommonValueObjectspackage
How It Works
- Analyzes your code for partial classes inheriting from
RequiredStringorRequiredGuid - Generates implementation code at compile-time
- Code appears in IntelliSense automatically
- No runtime reflection - all compile-time
Validation
Generated code includes automatic validation:
var result = ProductName.TryCreate("");
// Returns: Result.Failure("Product Name cannot be empty.")
var result = UserId.TryCreate(Guid.Empty);
// Returns: Result.Failure("User Id cannot be empty.")
Error messages use the class name (e.g., "Product Name" from "ProductName").
Source Code
This is a source generator - it runs at compile-time and generates C# code. The generated code is visible in:
- Visual Studio: Project ? Dependencies ? Analyzers ? FunctionalDdd.CommonValueObjectGenerator
- Output:
obj/Debug/net10.0/generated/
Resources
License
MIT � Xavier John
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0-alpha.44 | 34 | 1/13/2026 |