public class VehicleMetadata {
public required DateOnly ManufactureDate { get; init; }
public required bool IsTaxed { get; init; }
public required VehicleClass Class { get; init; }
public required string Model { get; init; } // Note: This is a new required property, but we forget to set it in our custom constructor
public VehicleMetadata() { }
[SetsRequiredMembers]
public VehicleMetadata(string governmentalDatabaseMetadataCode) {
var split = governmentalDatabaseMetadataCode.Split('-');
ManufactureDate = new DateOnly(Int32.Parse(split[0]), Int32.Parse(split[1]), Int32.Parse(split[2]));
IsTaxed = Boolean.Parse(split[3]);
Class = Enum.Parse<VehicleClass>(split[4]);
}
}
static void Test() {
var m = new VehicleMetadata("1990-01-19-True-Car");
Console.WriteLine("Vehicle model length is: " + m.Model.Length); // Oops! m.Model was never set anywhere despite being 'required'!
}
Code snippet taken from "Complete C# Quick Reference - C# 11".