Q: Can the C# compiler easily be changed to let enum types implement the generic IEquatable`1 and IComparable`1 interfaces? Suppose I wrote the following method:
public static T Max<T>(T x, T y) where T : struct, IComparable<T>
{
  return (x.CompareTo(y) > 0) ? x : y;
}

This works great and finds the larger of two value-type values. Here's an example where it's used:
void Test(DateTime oneTime, DateTime anotherTime)
{
  var latestTime = Max(oneTime, anotherTime);
  ...
}

But the above method doesn't work for enums. So e.g. Max(DayOfWeek.Thursday, DayOfWeek.Friday) won't work because of the constraint (compiler: "There is no boxing conversion from 'System.DayOfWeek' to 'System.IComparable<System.DayOfWeek>'.").
There are of course work-arounds. I could make the constraint refer to the non-generic interface, but that would involve boxing of y to System.Object in the CompareTo call. And who likes non-generic .NET 1 interfaces?
DayOfWeek does implement the non-generic interface IComparable (through the base class System.Enum of any enumeration type), but sadly DayOfWeek does not implement IComparable<DayOfWeek>.
So my question is: Would it be difficult to change this situation (in a future .NET release) so that a C# declaration like enum MyFoo { ... } gives a type that implements IComparable<MyFoo> and IEquatable<MyFoo>?
(When they introduced .NET 2, they made magic to have a T[] implement IList<T> even if System.Array is non-generic. My "request" seems easier (System.Enum is also non-generic, but the user-defined enum is a "real" type).)
