2
respostas

[Dúvida] Classe serializável?

Nesse material diz que podemos criar uma classe serializável para criar nossas exceções. Eu entendi como criar as exceções, mas não me recordo da explicação sobre como deixar essa classe serializável e o conceito disto.

O que é classe serializável? Como criá-la? Estou com um warn referente a isso. O que precisa ser feito para ajustar? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Olá Maria, tudo bem?

Uma classe serializável é uma classe que pode ser convertida em um formato que possa ser armazenado ou transmitido, como XML ou JSON. Isso é útil quando precisamos enviar objetos através da rede ou armazená-los em um arquivo, por exemplo.

Para tornar uma classe serializável em C#, basta adicionar o atributo [Serializable] acima da definição da classe. Por exemplo:

[Serializable]
public class MinhaExcecao : Exception
{
    // código da classe aqui
}

Quanto ao seu warning, pode ser que você precise adicionar o atributo [Serializable] na sua classe de exceção para que ela possa ser serializada corretamente.

Espero ter ajudado e bons estudos!

Maria,

Serialização é o processo de tradução de estruturas de dados ou estado de objeto em um formato que possa ser armazenado (por exemplo, em um arquivo ou buffer de memória, ou transmitido por meio de um enlace de conexão de rede) e reconstruído posteriormente no mesmo ou em outro ambiente computacional. Quando a série de bits resultante é relida de acordo com o formato de serialização, ela pode ser usada para criar um clone do objeto original idêntico semanticamente. Para muitos objetos complexos, como aqueles que fazem uso extensivo de referências, este processo não é direto. A serialização de objetos orientados a objetos não incluem qualquer de seus métodos associados com os quais eles foram previamente ligados inextricavelmente.

Este processo de serialização de um objeto também é chamado de marshalling de objeto. A operação oposta, a extração de uma estrutura de dados de uma série de bytes e chamada de desserialização (também chamada de unmarshalling).

Abaixo alguns links que com certeza irão te ajudar, por favor, leia:

===============================================================

Serialização: criando uma classe serializável

Artigo - 29/09/2022

Cinco etapas principais são necessárias para tornar uma classe serializável. Elas são apresentadas abaixo e explicadas nas seguintes seções:

  • Como derivar sua classe de CObject (ou de alguma classe derivada).CObject
  • Como substituir a função membro Serialize.
  • Como usar a macro DECLARE_SERIAL na declaração de classe.
  • Como definir um construtor que não aceita argumentos.
  • Como usar a macro IMPLEMENT_SERIAL no arquivo de implementação para sua classe.
class CPerson : public CObject
{
public:
   DECLARE_SERIAL(CPerson)
   // empty constructor is necessary
   CPerson();
   virtual ~CPerson();

   CString m_name;
   WORD   m_number;

   void Serialize(CArchive& archive);
};

https://learn.microsoft.com/pt-br/cpp/mfc/serialization-making-a-serializable-class?view=msvc-170

===============================================================

C# - Serialização de Objetos - BinaryFormatter e SoapFormatter

Na maioria das vezes que você cria um objeto usando a plataforma .NET você não se preocupa como os dados são armazenados na memória, afinal das contas a plataforma .NET faz esse trabalho para você.

O que é serialização ?

A Serialização, como implementada no namespace System.Runtime.Serialization, é o processo de serializar e desserializar objetos de modo que eles possam ser armazenados ou transferidos e depois recriados. Temos assim que: ...

Como serializar um Objeto ?

Para serializar um objeto os passos são:

  • Criar um objeto stream para tratar a saida serializada;
  • Cria um objeto BinaryFormatter (localizado no System.Runtime.Serialization.Formatters.Binary);
  • Chamar o método BinaryFormatter.Serialize para serializar o objeto, canaliza o resultado para o stream;
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace SerializacaoCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            //serialização C#
            string dados = "Este texto deve ser armazenado em um arquivo.";
            // cria um arquivo para salvar os dados
            FileStream fs = new FileStream("MacorattiSerializacao.Data", FileMode.Create);
            // Cria um objeto BinaryFormatter para realizar a serialização
            BinaryFormatter bf = new BinaryFormatter();
            // Usa o objeto BinaryFormatter para serializar os dados para o arquivo
            bf.Serialize(fs, dados);
            // Fecha o arquivo
            fs.Close();
            //Aguarda o pressionamento de uma tecla para encerrar
            Console.WriteLine("Arquivo serializado !");
            Console.ReadKey();
        }
    }
}

https://macoratti.net/13/12/c_seri1.htm

===============================================================

O que é serialização? Quando usar? Como implementar no C#?

Serialização: O que é?

Em ciência da computação, no contexto de armazenamento e transmissão de dados, a serialização é o processo de salvar ou transliterar um objeto em outro em um meio de armazenamento (como um arquivo de computador ou um buffer de memória) ou transmiti-lo por uma conexão de rede, seja em forma binária ou em formato de texto como o XML ou JSON. Esta série de bytes pode ser usada para recriar um objeto com o mesmo estado interno que o original.

Como implementar no C#?

A serialização já é implementada no C# para diferentes formatos. A serialização deve ser vista primeiro como um conceito, e depois como um recurso de linguagem.

Você pode, inclusive, implementar ...

https://pt.stackoverflow.com/questions/13087/o-que-%C3%A9-serializa%C3%A7%C3%A3o-quando-usar-como-implementar-no-c

===============================================================

[]'s,

Fabio I