I've had a hard time figuring out how I can write a struct in C# that has constraints on its fields' values. For example, System.DateTime
DateTime d = new DateTime();
puts the value 01/01/0001 12:00:00 AM in d. But I can't write an explicit parameterless constructor, as structs are not allowed to have an explicit parameterless constructor. So, how can I create a struct that will be default constructed within the constraints I want?
The only thing I could think of was to design properties such that they return values within the constraints I want. For example, if I store an int that I want to be greater than 0 I just add one to the return value and disallow setting to less than 1. Is this the sensible route to take?