Здравствуйте, ·, Вы писали:
·>Так не чинится же, ну никак. Ведь в реальности такой код не пишут, будет Console.WriteLine("You chose " + colour).
Надо смотреть, в какое AST конвертится этот код в реальности.
Потому, что IL получается такой, как будто написали
Console.WriteLine(string.Concat("You chose ", colour.ToString()));
·>Даже хуже. Тот же Reshaper будет выдавать warning, что "You chose " + colour.ToString() надо упростить до "You chose " + colour
Я с вами на 80% согласен. 20% оставляю на то, что в финале это всё-таки починят так, чтобы подмена происходила как в данном примере:
1. Порождается AST по правилам компилятора для сложения строк и автоконверсии объектов через ToString()
2. Вызов ToString подменяется на пользовательский.
Пока непонятно, возможно это или нет — но скорее да, чем нет. Надо попробовать на пользовательском не-enum типе.