Giriş
Şu satırı dahil ederiz.
BinaryFormatter Java'daki ObjectOutputStream ve ObjectInputStream ile aynı işi yapar. Serialize edilecek sınıfın [Serializable] Anotasyonu ile tanıımlı olması gerekir.
Yanlış Kullanım
Nesne yerine nesnenin alanlarını yazmaya çalışmak yanlış. Şöyle yapmak yerine tüm nesnesi yazmak gerekir.
Şöyle yaparız.
Okumak için şöyle yaparız.
Stream MemoryStream olabilir. Şöyle yaparız.
Stream CryptoStream olabilir. Şöyle yaparız.
Stream FileStream olabilir. Şöyle yaparız.
StreamWriter içindeki stream'e yazmak için şöyle yaparız.
Şu satırı dahil ederiz.
using System.Runtime.Serialization.Formatters.Binary;
IFormatter arayüzünü gerçekleştirir.BinaryFormatter Java'daki ObjectOutputStream ve ObjectInputStream ile aynı işi yapar. Serialize edilecek sınıfın [Serializable] Anotasyonu ile tanıımlı olması gerekir.
Yanlış Kullanım
Nesne yerine nesnenin alanlarını yazmaya çalışmak yanlış. Şöyle yapmak yerine tüm nesnesi yazmak gerekir.
MemoryStream stream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, foo.type);
formatter.Serialize(stream, foo.stringData);
ConstructorŞöyle yaparız.
IFormatter formatter = new BinaryFormatter();
Deserialize metoduOkumak için şöyle yaparız.
MyObject myObject = formatter.Deserialize(stream) as MyObject;
Stream MemoryStream olabilir. Şöyle yaparız.
Yazmak için şöyle yaparız.byte[] bytes = ...;
var formatter = new BinaryFormatter();
using (var ms = new MemoryStream(bytes))
{
return formatter.Deserialize(ms);
}
Stream CryptoStream olabilir. Şöyle yaparız.using (var cryptoStream = new CryptoStream(...,..., CryptoStreamMode.Read))
{
MyObject myObject = (MyObject) formatter.Deserialize(cryptoStream);
return myObject;
}
Serialize metoduformatter.Serialize(stream, myObject);
ÖrnekStream MemoryStream olabilir. Şöyle yaparız.
using (MemoryStream mS = new MemoryStream())
{
formatter.Serialize(ms, myObject);
return mS.ToArray();
}
ÖrnekStream CryptoStream olabilir. Şöyle yaparız.
using (var cryptoStream = new CryptoStream(..., ..., CryptoStreamMode.Write))
{
formatter.Serialize(cryptoStream, myObject);
...
}
ÖrnekStream FileStream olabilir. Şöyle yaparız.
Stream s = new FileStream(@"c:\t.txt",FileMode.Create,FileAccess.Write, FileShare.None);
formatter.Serialize(stream, foo);
ÖrnekStreamWriter içindeki stream'e yazmak için şöyle yaparız.
public void Serialize(string file)
{
using (var writer = new StreamWriter(file))
{
var bf = new BinaryFormatter();
bf.Serialize(writer.BaseStream, this);
}
}
Hiç yorum yok:
Yorum Gönder