Bir dosya türünün farklı yazılım sürümleri arasında geriye dönük uyumluluğa izin vermek için iyi bir tasarım nedir?
Örneğin, microsoft 2007, 2010 ve 2013 vb. Kelimelerini tüm açık docx dosyalarına nasıl alır, ancak farklı sürümler daha fazla / daha az veri kaydedebilir ve verileri aynı dosya türüne, biraz farklı şekillerde kaydedebilir ve bir bir sürümde kaydedilen dosya başka bir sürümde açılabilir, ancak dosyanın belirli öğeleri eski sürümlerde bulunmayabilir mi?
Demek istediğim, bunu yapmanın en bariz yolu,
private string openfile(string filename)
{
File.Open(filename)
... some logic that gets a header from the file that will never change
switch (fileversion)
case 2007:
.....
case 2010
.....
case 2013
.....
}
ancak bu inanılmaz derecede yekpare, çok genişletilemez ve çok sayıda kopyalanmış / yapıştırılmış koda yol açıyor gibi görünüyor.
Bu yüzden, başlıkta, dosyada bulunması gereken değişmez yapıları ve serileştirme / serileştirme için kullanılabilir olması gereken yöntemleri, ardından çoklu kalıtımları tanımlayan tüm sürümler için bir taban arayüzü kullanmayı düşünüyordum. arabirimi uygulayan yeni sürümün sınıfı eski sürümü devralır ve yalnızca dosya değiştiğinden çoğunlukla değişen şeyleri geçersiz kılar.
Dosyanın yapısı hakkında gerçekten rahatsız değilim, çünkü zaten XML kullanacağımıza karar verildi ve ilk şema genel olarak zaten karar verdi. Ancak hiç şüphesiz gelecekte değişiklikler olacak ve ben sadece kodu bu değişiklikleri kolaylaştıracak şekilde tasarlayabilmek istiyorum.