Por que as propriedades sem um setter não são serializadas

Eu tenho uma classe serializável e uma das propriedades da minha classe gera umGuid no getter. A propriedade não implementa setter e é ignorada durante a serialização. Por que isso e sempre tenho que implementar um setter para que minha propriedade seja serializada.

[Serializable]
public class Example
{
    [XmlAttribute("id")]
    public string Id
    {
        get
        {
             return Guid.NewGuid().ToString();
        }
    }
}

Eu tentei implementar um setter vazio e ele foi serializado corretamente.

[Serializable]
public class Example
{
    [XmlAttribute("id")]
    public string Id
    {
        get
        {
             return Guid.NewGuid().ToString();
        }
        set {}
    }
}

Atualizar:

Você pode apontar como devo definir propriedades cujos valores nunca mudam ou aqueles para os quais o valor é gerado internamente?

questionAnswers(5)

yourAnswerToTheQuestion