Skip to main content

Class ValueObjectDescriptor

Namespace: AdCodicem.ValueObjects.Metadata
Assembly: AdCodicem.ValueObjects.Abstractions.dll

Runtime description of a value object type, used by the integrations that only know a .

public sealed class ValueObjectDescriptor

Inheritance

objectValueObjectDescriptor

Inherited Members

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString()

Remarks

The delegates it exposes operate on boxed values, which is acceptable because every one of them is invoked during start-up work — building the EF Core model, generating an OpenAPI document, registering a Dapper type handler — never on a per-request path. Request paths go through the strongly typed generic APIs.

Descriptors are produced by , which is fully generic and therefore free of reflection: the source generator emits one call per value object in a module initializer.

Properties

Create

Gets the validating factory. Throws on a rejected value.

public Func<object?, object> Create { get; }

Property Value

Func<object?, object>

CreateUnchecked

Gets the trusted-source factory, which performs neither normalization nor validation.

public Func<object?, object> CreateUnchecked { get; }

Property Value

Func<object?, object>

Format

Gets the invariant text representation of a boxed value object.

public Func<object, string> Format { get; }

Property Value

Func<object, string>

GetValue

Gets the accessor returning the boxed underlying value of a boxed value object.

public Func<object, object?> GetValue { get; }

Property Value

Func<object, object?>

Schema

Gets the declarative constraints of the value object.

public ValueObjectSchema Schema { get; }

Property Value

ValueObjectSchema

TryCreate

Gets the non-throwing validating factory.

public BoxedTryCreate TryCreate { get; }

Property Value

BoxedTryCreate

TryParse

Gets the non-throwing text parser.

public BoxedTryParse TryParse { get; }

Property Value

BoxedTryParse

ValueObjectType

Gets the value object type.

public Type ValueObjectType { get; }

Property Value

Type

ValueType

Gets the underlying value type.

public Type ValueType { get; }

Property Value

Type

Methods

For<TSelf, TValue>(ValueObjectSchema)

Builds a descriptor for a value object, resolving every operation statically.

public static ValueObjectDescriptor For<TSelf, TValue>(ValueObjectSchema schema) where TSelf : struct, IValueObject<TSelf, TValue>

Parameters

schema ValueObjectSchema

Declarative constraints of the value object.

Returns

ValueObjectDescriptor

The descriptor.

Type Parameters

TSelf

Value object type.

TValue

Underlying value type.