Türetilmiş bir sınıfı serileştirilmiş verilerden nasıl serileştirmiyorsunuz? Ya da belki de şunu söylemeliyim ki, verileri türetilmiş sınıflara 'serileştirme' için daha iyi bir yol var mı? Örneğin, X, Y ve Z gibi diğer üç sınıf tarafından miras alınan saf bir sanal taban sınıfına (B) sahip olduğunuzu varsayalım. Ayrıca, X: B'yi çevirecek olan serialize() yöntemine sahibiz. Y: B ve Z: B, serileştirilmiş verilere.Türetilmiş bir sınıfı serileştirilmiş verilerden nasıl serileştirmiyorsunuz?
Uzak bir süreç için soket, adlandırılmış yöneltme, vb genelinde zapped edilebilir Bu şekilde.
Sahip olduğum sorun, seri hale getirilmiş verilerden uygun bir nesneyi nasıl oluşturabiliriz?
Final türetilmiş nesne türü gösterir seri veri bir tanımlayıcıyı da dahil olmak üzere bir ile gelip tek çözüm. Alıcı, önce türetilmiş tür alanını serileştirilmiş verilerden ayrıştırır ve daha sonra uygun yapıcıyı çağırmak için bir anahtar deyimi (veya bunun gibi bir çeşit mantık) kullanır. Örneğin
:
B deserialize(serial_data)
{
parse the derived type from the serial_data
switch (derived type)
case X
return X(serial_data)
case Y
return Y(serial_data)
case Z
return Z(serial_data)
}
Yani türetilmiş nesne türünü öğrendikten sonra biz uygun türetilmiş tip yapıcısı çağırmak. Bununla birlikte, bu garip ve hantal hissettiriyor. Umarım bunu yapmanın daha elverişli bir yolu vardır. Var mı?
Kompakt seri (bit temelinde) dosyaların içine şeyler kaydetmek için plan, özellikle popo sağda ısırabilir. Yıllar geçtikçe ve sınıflar değiştikçe, onları tekrar yüklemeye çalıştığınızda oldukça sıkıldınız. Bu nedenle, dosyaları kendiliğinden belgelemek ve versiyon oluşturmak iyi bir fikirdir. Sadece istemci ve sunucu her zaman kullanılan protokol üzerinde anlaşırsa, düz bayt göndermek için Tamam. Değilse, o zaman ben 'XML/JSON' için başvururdum. Bununla birlikte, bunu daha kolay hale getirebilecek, örneğin 'SOAP', vb. Gibi –
@Hamish +1'e de bakabilirim. –