Hoje me deparei com mais um “macete” no framework .NET. Na realidade talvez seja um bug já que não encontrei em nenhum lugar a explicação deste comportamento! ô.Ô
Estava trabalhando em um editor de cenários 3d e me deparei com a necessidade de serializar a estrutura de dados. Uma maneira bastante simples e direta de fazê-lo é através da serialização XML que o .NET oferece. É uma mão na roda realmente, adianta muita coisa.
Contudo, uma propriedade da minha classe não estava sendo gravada no XML nem por reza braba. Se o pessoal da Matrix estivesse aqui seria mais fácil.
Bom, a propriedade estava assim:
public string Name
{
get { return m_name; } // m_name é privada
}
Isto teoricamente funcionaria; teoricamente. Na prática não funciona. Não há nada de errado na propriedade nem na classe nem nos atributos. Na verdade não havia nada de errado, mas percebi que durante a serialização a execução não passava pelo get acima.
Para o código acima funcionar fiz assim:
public string Name
{
get { return m_name; } // m_name é privada
set { }
}
Ooohh sim; isto mesmo que você pensou! Ele não funcionava porque faltava um set. Siniiiiistro não?
Eu até consigo pensar em desculpas que a Microsoft daria para isto não funcionar, mas nenhuma que imaginei é plausível.








