Como funcionam as anotações de dados?

Uso anotações de dados no meu projeto ASP.NET MVC 3 para validar o modelo. Estes são extremamente convenientes, mas atualmente são mágicos para mim. Eu li que anotações de dados fazemnã lança exceções. Como então o MVC sabe adicionar erros de validação ao dicionário de estado do modelo? Como a falha em definir uma propriedade no modelo devido à validação do modelo aumenta para MVC se nenhuma exceção é lançada? Sempre presumi que exceções eram lançadas toda vez que uma propriedade falhava e que a ligação do modelo MVC capturava a exceção e a adicionava ao dicionário de estado do model

Para testar isso, criei um aplicativo de console e adicionei uma classe de amostra com uma anotação de validação:

public class MyObject
{
    [StringLength(10, MinimumLength=3)]
    public string Name { get; set; }
}

Instanciei o objeto e tentei atribuir valores à propriedade Name que eram menores que 3. A propriedade atribuiu muito bem, apesar da anotação que diz que o comprimento da string menor que 3 não é permitid

    static void Main(string[] args)
    {
        MyObject mine = new MyObject();
        mine.Name = "hi";
        Console.WriteLine(mine.Name);
        Console.ReadLine();
    }

Este pequeno programa escreve "oi" no console. Por quê? Eu esperava que ficasse bravo ao tentar definirmine.Name para "oi".

O que estou perdendo

Desde já, obrigado

questionAnswers(4)

yourAnswerToTheQuestion