Você está na página 1de 15

.NET – POO – C# .

NET
• Objetivo
• Visão Geral
• Serialização de Objetos
• Serialização de XML
• Conclusão
Capacitar o aluno no uso dos recursos de serialização binária
e no formato XML oferecidos pela plataforma .NET de forma
fácil, rápida e eficaz.
• Muitas aplicações necessitam de armazenar ou transferir objetos.
• Para fazer as tarefas simples o possível, o .NET Framework inclui
muitas técnicas de serialização.
• As técnicas para converter objetos em binário ou documentos
XML (Extensible Markup Language) que podem ser facilmente
armazenados, transferidos e recuperados.
• Esta conversão é chamada de Serialização.
• No desenvolvimento pode compreender 2 termos:
o Serialização - converter a instância de uma determinada
classe em um arquivo;
o Desserialização - converter (recriar) do arquivo serializado
para a instância de uma classe com os mesmos atributos
previamente serializados.
Instância de uma Classe

Desserialização
Serialização

Meios de/para serialização


• Como serializar um objeto para um arquivo binário?

//Cria uma string para ser armazenada como conteúdo


string data = “Este arquivo precisa ser armazenado.”;

//Cria o arquivo a ser salvo


FileStream fs = new FileStream("SerializedString.Data", FileMode.Create);

//Cria o formatador binário para realizar a serialização


BinaryFormatter bf = new BinaryFormatter();

//Uso o formatador binário para serealizar o conteúdo em um arquivo binário


bf.Serialize(fs, data);

//Fecha o arquivo
fs.Close();
• Como desserializar de um arquivo binário?
//Abre o arquivo para leitura dos dados
FileStream fs = new FileStream("SerializedString.Data", FileMode.Open);
//Cria um formatador binário para a leitura dos dados
BinaryFormatter bf = new BinaryFormatter();
//Cria o objeto para armazenar o retorno
string data = "";
//Usa o formatador binário para desserializar o conteúdo
data = (string)bf.Deserialize(fs);
//Fecha o arquivo
fs.Close();
//Exibe no console o conteúdo desserializado
Console.WriteLine(data);
• Como criar uma classe que pode ser serializada?
[Serializable]
public class ShoppingCartItem
{
public int productId;
public decimal price;
[OptionalField]
public int quantity;
[NonSerialized]
public decimal total;
public ShoppingCartItem(int _productID, decimal _price, int _quantity)
{
productId = _productID;
price = _price;
quantity = _quantity;
total = price * quantity;
}
}
• Como recuperar uma valor não serializado a partir de
outros campos serializados?

[Serializable]
public class ShoppingCartItem : IDeserializationCallback{
...
void IDeserializationCallback.OnDeserialization(Object sender)
{
//Após a desserialização, o total é calculado
total = price * quantity;
}
}
• O .NET Framework inclui uma série de bibliotecas para leitura e
gravação de arquivos XML, incluindo os namespaces:
o System.Xml.Serialization;
o System.Xml.
• A serialização provê métodos para converter objetos, incluindo os
baseados em classes customizadas, para e de arquivos XML.
• Com a serialização XML, você pode escrever qualquer objeto para
um arquivo texto para depois obter com somente algumas linhas de
código.
• Similarmente, você pode usar serialização XML para transmitir
objetos entre computadores através de WebServices mesmos se
os ambos os computadores não estiver usando o .NET Framework.
• Como serializar para XML?

//Cria o arquivo para salvar os dados


FileStream fs = new FileStream("SerializedDate.XML", FileMode. Create);

//Cria o serializador XML para serializar os dados


XmlSerializer xs = new XmlSerializer(typeof(DateTime));

//Realiza a serialização da data para um arquivo XML


xs.Serialize(fs, System.DateTime.Now);

//Fecha o arquivo
fs.Close();
• Como desserializar de um arquivo XML?

//Abre o arquivo para ser lido


FileStream fs = new FileStream("SerializedDate.XML", FileMode. Open);

//Cria uma instância de XmlSerializer para desserializar


XmlSerializer xs = new Xml Serializer(typeof(DateTime));

//Usa o serializador XML para deserializar os dados contidos no arquivo


DateTime previousTime = (DateTime)xs.Deserialize(fs);

//Fecha o arquivo
fs. Close();

//Exibe a data e hora desserializada


Console.WriteLine("Day: " + previousTime.DayOfWeek + ", Time: " +
previousTime.TimeOfDay.ToString());
• Como criar / modificar um objeto serializável?

[XmlRoot ("CartItem")]
public class ShoppingCartItem
{
[XmlAttribute]
public int productId;
public decimal price;
public int quantity;

[XmlIgnore]
public decimal total;

public ShoppingCartItem() { }
}
• A serialização exporta um objeto como uma série de bytes,
onde que o objeto serializado define o valor de um objeto.
• A maioria das classes podem ser serializadas simplesmente
adicionando o atributo [Serializable].
• A serialização XML provê uma maneira de armazenar e
transferir objetos usando padrões abertos, logo pode ser
customizada para os requisitos de um schema XML,
permitindo a simples conversão em documentos XML e de
documentos XML para objetos.
.NET – POO – C# .NET

Você também pode gostar