Сабж.
Это чтобы можно было использовать типы нового рантайма.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, catbert, Вы писали:
C>>Это чтобы можно было использовать типы нового рантайма.
VD>Вопрос не очень грамотно сформулирован.
Почему? Ты написал, что макрос StructuralEquality не реализует интерфейс IStructuralEquatable, а он существует только для 4-го фреймворка.
Поэтому вопрос резонный — если проект компилируется для .net 4, то тогда можно добавить интерфейс и его реализацию.
Если же это .net 3.5, то смысла добавлять IStructuralEquatable нет никакого.
Кстати, вопрос. В
статье указано, что при реализации IEquatable для типов-значений также необходимо определять оператор ==.
Можно ли вообще определять операторы из макросов?
Здравствуйте, YF, Вы писали:
VD>>Вопрос не очень грамотно сформулирован.
YF>Почему?
Потому что не ясно о чем идет речь. То ли о проекте в которых макрос содержаться, то ли о целевом проекте (где они используются).
YF>Ты написал, что макрос StructuralEquality не реализует интерфейс IStructuralEquatable, а он существует только для 4-го фреймворка.
YF>Поэтому вопрос резонный — если проект компилируется для .net 4, то тогда можно добавить интерфейс и его реализацию.
YF>Если же это .net 3.5, то смысла добавлять IStructuralEquatable нет никакого.
На сегодня компиляция для другого фрэймворка невозможна (хотя в ближайшее время, если Хардкейс не подведет, это должно измениться). Так что можно просто использовать символы препроцессора. В проекте компилятора и стандартных библиотек имеется символ NET_4_0. Его можно и проверять.
Когда добавим кросрантаймную компиляцию, добавим и свойство которое будет говорить для какого фрэймворка производится компиляция целевого проекта.
YF>Кстати, вопрос. В статье указано, что при реализации IEquatable для типов-значений также необходимо определять оператор ==.
YF>Можно ли вообще определять операторы из макросов?
Конечно можно.