Serializando dados de membros privados

Estou tentando serializar um objeto para XML que possui várias propriedades, algumas das quais são somente leitur

public Guid Id { get; private set; }

Marquei a classe [Serializable] e implementei a interface ISerializable.

Abaixo é o código que estou usando para serializar meu objet

public void SaveMyObject(MyObject obj)
{
    XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
    TextWriter tw = new StreamWriter(_location);
    serializer.Serialize(tw, obj);
    tw.Close();
}

Infelizmente, cai na primeira linha com esta mensage

InvalidOperationException não foi tratado: não foi possível gerar uma classe temporária (resultado = 1). erro CS0200: A propriedade ou o indexador 'MyObject.Id' não pode ser atribuído a - ele é somente leitura

Se eu definir a propriedade Id como pública, ela funciona bem. Alguém pode me dizer se estou fazendo algo, ou pelo menos se for possível?

questionAnswers(4)

yourAnswerToTheQuestion