3.5sp1 здесь.
MSDN , по-видимому, подразумевает, что проверка происходит до принуждения. Это соответствует тому, что вы обнаружили.
Я сделал это сам, и ValidateValueCallback
предшествует CoerceValueCallback
. Я даже прочитал источник в Reflector и подтвердил то же самое, хотя трудно следовать всему этому коду и точно знать все возможные пути.
Интересно. Интересно, было ли наоборот в более ранней версии.
Edit:
Видимо, когда вы возвращаете значение, отличное от CoerceValueCallback
, ValidateValueCallback
вызывается снова для нового значения. Проверка-принуждать-Validate.