Class HookResultAttribute
Namespace: DotBoxD.Abstractions
Assembly: DotBoxD.Abstractions.dll
Marks a readonly partial record struct as a hook result: a value a .Register(…) /
.RegisterLocal(…) terminal returns and the host applies. The DotBoxD generator emits builder members
the user did not
declare manually — Ok(), Reject(string? reason = null), and a With<Field>(value)
per non-discriminator field — so result construction reads fluently and lowers to verified
record.new IR.
A hook result must be a top-level readonly partial record struct that declares a bool Success
field and a string? Reason field.
Success = false means "abstain, fall through to the next matching registration"; a successful
result may still carry a domain veto such as CanDie = false, so abstain and veto never overload
the same field.
[AttributeUsage(AttributeTargets.Struct, Inherited = false)]public sealed class HookResultAttribute : AttributeInheritance
Section titled “Inheritance”object ← Attribute ← HookResultAttribute
Inherited Members
Section titled “Inherited Members”Attribute.Equals(object?), Attribute.GetCustomAttribute(Assembly, Type), Attribute.GetCustomAttribute(Assembly, Type, bool), Attribute.GetCustomAttribute(MemberInfo, Type), Attribute.GetCustomAttribute(MemberInfo, Type, bool), Attribute.GetCustomAttribute(Module, Type), Attribute.GetCustomAttribute(Module, Type, bool), Attribute.GetCustomAttribute(ParameterInfo, Type), Attribute.GetCustomAttribute(ParameterInfo, Type, bool), Attribute.GetCustomAttributes(Assembly), Attribute.GetCustomAttributes(Assembly, bool), Attribute.GetCustomAttributes(Assembly, Type), Attribute.GetCustomAttributes(Assembly, Type, bool), Attribute.GetCustomAttributes(MemberInfo), Attribute.GetCustomAttributes(MemberInfo, bool), Attribute.GetCustomAttributes(MemberInfo, Type), Attribute.GetCustomAttributes(MemberInfo, Type, bool), Attribute.GetCustomAttributes(Module), Attribute.GetCustomAttributes(Module, bool), Attribute.GetCustomAttributes(Module, Type), Attribute.GetCustomAttributes(Module, Type, bool), Attribute.GetCustomAttributes(ParameterInfo), Attribute.GetCustomAttributes(ParameterInfo, bool), Attribute.GetCustomAttributes(ParameterInfo, Type), Attribute.GetCustomAttributes(ParameterInfo, Type, bool), Attribute.GetHashCode(), Attribute.IsDefaultAttribute(), Attribute.IsDefined(Assembly, Type), Attribute.IsDefined(Assembly, Type, bool), Attribute.IsDefined(MemberInfo, Type), Attribute.IsDefined(MemberInfo, Type, bool), Attribute.IsDefined(Module, Type), Attribute.IsDefined(Module, Type, bool), Attribute.IsDefined(ParameterInfo, Type), Attribute.IsDefined(ParameterInfo, Type, bool), Attribute.Match(object?), Attribute.TypeId, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString()
Examples
Section titled “Examples”[HookResult]
public readonly partial record struct CombatDamageResult(bool Success, string? Reason, int Damage);
// generated: CombatDamageResult.Ok().WithDamage(999), CombatDamageResult.Reject("not applicable")