The constructor to deserialize an object of ‘xxx’ was not found

Eveeeet başka bir Maykrosoft .NET günlüğüne hoşgeldiniz…Bugünki sorun nedir???

Oturdunuz, çok heveslisiniz, .NET framework kullanarak şahane bir uygulama yazmaya karar verdiniz. Ama o da ne? ISerializable implement eden bir sınıftan türettiğiniz bir sınıfı Deserialize ederken aşağıdaki problemle karşılaştınız.

The constructor to deserialize an object of ‘xxx’ was not found

Ama abi Serialize ederken sorun olmuyo, bu niye böyle yapıyo şimdi? dediğinizi duyar gibiyim :):) Bill amcaya yine selamlarınızı mı ilettiniz gizliden gizliden, ya da niye gizli olsun, bağıra bağıra :):)

Durun, rahat bir nefes alın, çözüm burda…

Ne geyik yaptım şaka maka 🙂 Neyse şakayı bir kenara bırakalım arkadaşlar bir süre için. Yukarıda da kısaca bahsettiğim gibi, ISerializable arayüzünü implement eden bir sınıftan türettiğiniz bir sınıfı deserialize ederken yukarıdaki hatayı almanız muhtemel. Bu sorunun nedeni ise ISerializable arayüzünü gerçekleyen bir sınıftan türettiğiniz bir sınıf, ISerializable metotlarını da gerçeklemelidir (serialization ve deserialization işlemleri için ayrı ayrı). Siz büyük ihtimalle bu kısmı atladınız, es geçtiniz ya da bilmiyorsunuz.

Örnek verelim,

[Serializable]
class Test: Hashtable
{
public
Test()
{
}
}

gibi bir sınıf oluşturdunuz. Görüldüğü üzere bu sınıf ISerializable arayüzünü gerçekleyen Hashtable sınıfından türetilmiş. İşte bu “Test” adlı sınıfımızı deserialize işlemine tabi tuttuğumuzda yukarıdaki hatayı alacağız. Bu hatayı engellemek için ise ISerializable arayüzüne ait,

protected Test(SerializationInfo info, StreamingContext context) : base(info, context) { }

constructor ını da gerçeklemeniz gerekmektedir. Yukarıdaki sınıfa bu constructor da eklenirse yukarıdaki hatanın oluşması engellenmiş olur çünkü bu constructor, ilgili sınıfın deserialization işleminde kullanılır.

Son bir not daha düşelim, eğer serialize etmek istediğiniz ek veriler varsa, ISerializable arayüzüne ait GetObjectData() metodunu da gerçeklemeniz gerekiyor arkadaşlar. Benden söylemesi…

, ,

No comments yet.

Bir Cevap Yazın

Font Resize