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; }
public static VehicleMetadata FromGovernmentCode(string governmentCode, string model) {
var split = governmentCode.Split('-');
return new VehicleMetadata { // Compiler won't let us forget to set 'Model' here. If we add more members in future, we can't compile without updating this method too.
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]),
Model = model
};
}
}
static void Test() {
var m = VehicleMetadata.FromGovernmentCode("1990-01-19-True-Car", "BenMobile");
Console.WriteLine("Vehicle model length is: " + m.Model.Length); // Works! :)
}
Code snippet taken from "Complete C# Quick Reference - C# 11".