Ontem e anteontem perdi bastante tempo com uma mensagem que não foi recebida.
Depois de algum tempo, percebi que isso se devia à falta de uma [serialize]
tag no início de uma das classes, presente naquela mensagem: como essa tag não estava presente, a classe não poderia ser serializada, portanto a mensagem não foi criada e obviamente não foi enviado.
Agora que penso nisso: qual é o sentido de tal tag? Por que a linguagem C# (ou a tecnologia .NET em geral) simplesmente não declara todas as classes como serializáveis? Que possível desvantagem isso causaria?
Algumas pessoas querem encerrar esta questão como uma duplicata desta , mas essa questão explica o que a tag mencionada faz, mas não por que não é uma configuração padrão para todas as classes (daí a tag "advogado de linguagem" desta questão).
A pergunta que eu acho que pode ser respondida no sentido StackOverflow (embora talvez melhor em SoftwareEngineering.Stackexchange.com) é "Qual possível desvantagem declararia automaticamente todas as classes como causa serializável?"
Existem alguns: