Namespace Huml.Net.Serialization

Classes

HumlConstructorAttribute

Designates the constructor to use during HUML deserialisation. When multiple public constructors exist, annotate exactly one with this attribute.

HumlConverter

Abstract base class for all HUML converters. Provides a non-generic entry point for collection storage in HumlOptions.Converters and type-check dispatch via CanConvert(Type).

HumlConverterAttribute

Specifies the converter type to use when serialising or deserialising the annotated property, class, or struct. The converter type must derive from HumlConverter.

HumlConverterFactory

Abstract base for a HUML converter that produces a different concrete HumlConverter instance per requested type, mirroring System.Text.Json.Serialization.JsonConverterFactory.

HumlConverter<T>

Typed HUML converter for T. Override Read(HumlNode) and Write(HumlWriterContext, T) to control how T is deserialised and serialised.

HumlDerivedTypeAttribute

Registers a concrete derived type and its discriminator label on the polymorphic base class. Repeatable — add one attribute per concrete subtype.

HumlEnumValueAttribute

Overrides the HUML string name used to represent an individual enum member during serialisation and deserialisation.

HumlExtensionDataAttribute

Designates a single property as the overflow bucket for HUML keys that do not match any declared property during deserialisation.

HumlGeneratedContext

Abstract base class for source-generated HUML serialisation contexts. Subclass with partial and annotate with [HumlSerializable(typeof(T))] to register types; the source generator will emit the HumlTypeInfo<T> implementations.

HumlIgnoreAttribute

Marks a property to be excluded from HUML serialisation and deserialisation.

HumlIgnoreDefaultsAttribute

Instructs the HUML serialiser to omit all properties of the decorated type when their runtime value equals the CLR default for their declared type.

HumlNamingPolicy

Determines the naming policy used to convert a .NET property name to a HUML key during serialisation and deserialisation.

HumlNamingPolicyAttribute

Overrides the global PropertyNamingPolicy for the annotated property. Specify Unspecified (or omit the attribute) to defer to the global policy.

HumlNumberHandlingAttribute

Overrides NumberHandling for the annotated property. Takes precedence over the global option during serialisation and deserialisation.

HumlPolymorphicAttribute

Marks a class or interface as the polymorphic base for discriminator-based dispatch. The discriminator key (default _type) is emitted as the first mapping entry during serialisation and consumed during deserialisation to select the concrete type.

HumlPropertyAttribute

Customises how a property is represented in a HUML document.

HumlPropertyInfo

Describes a single property for use during HUML (de)serialisation. Mirroring JsonPropertyInfo, delegates are boxed non-generic to avoid covariance and contravariance issues across the type hierarchy.

HumlRequiredAttribute

Marks a property as required during HUML deserialisation. When a HUML input does not contain a mapping entry for this property, HumlDeserializeException is thrown listing all missing required members. Has no effect during HumlSerializer.Populate<T>. Mirrors System.Text.Json.Serialization.JsonRequiredAttribute.

HumlTypeInfo

Non-generic base class for type metadata used in HUML (de)serialisation. This base allows GetTypeInfo(Type, HumlOptions) to return a covariant result without requiring a type parameter at the call site.

HumlTypeInfo<T>

Provides type metadata for HUML (de)serialisation of T.

HumlWriterContext

Provides the write-path context passed to Write(HumlWriterContext, T). Wraps the internal StringBuilder accumulator and serialiser options, exposing append methods without leaking internal types.

Interfaces

IHumlTypeInfoResolver

Provides HumlTypeInfo instances for types encountered during HUML (de)serialisation. Implement this interface to supply pre-computed type metadata (e.g. from a source generator) instead of the default reflection path. Returning null from GetTypeInfo(Type, HumlOptions) causes the library to fall through to the built-in reflection path for that type.

Enums

HumlIgnoreCondition

Controls which properties are omitted from HUML serialisation output based on their runtime value.

InlineMode

Specifies the per-property inline format override for collection serialisation.