OptionalArgument¶
Wraps an attribute argument value that may or may not be present.
See also: Projections Overview | OptionalAttribute | OptionalValue
Extracting Values¶
string value = arg.OrDefault("fallback");
int count = arg.OrDefault(() => ComputeDefault());
string value = arg.OrThrow("Argument required");
string value = arg.OrThrow(() => new CustomException());
string? maybeNull = arg.OrNull();
Transforming¶
OptionalArgument<int> length = arg.Map(s => s.Length);
OptionalArgument<int> length = arg.Select(s => s.Length); // alias
OptionalArgument<MyEnum> enumValue = arg.ToEnum<MyEnum>(); // Roslyn stores enums as ints
Pattern Matching¶
string result = arg.Match(
whenPresent: v => $"Value: {v}",
whenEmpty: () => "No value");
if (arg.TryGetValue(out var value)) { /* use value */ }
if (arg.IsMissing(out var value)) return; // early exit pattern