سؤال

لقد قمت بإنشاء بعض الأنواع المخصصة على سبيل المثال:

public class Temperature
{
    protected double _celcius;

    public Temperature(){}

    public Temperature(double celcius)
    {
        _celcius = celcius;
    }

    public double Celcius
    {
        //sets & returns temperature in Celcius
    }

    public double Fahrenheit
    {
        //sets & returns temperature in Fahrenheit
    }
}

وواحد مماثل ل Mass, ، إلخ.

لدي أيضًا كائن مخصص، على سبيل المثال Planet, ، والذي يستخدم هذه الأنواع المخصصة كخصائص.

[Serializable]
public class Planet
{
    public int PositionFromSun;
    public Mass Mass;
    public Temperature Temperature;
}

ما هي أفضل ممارسة للتسلسل Planet في هذه الحالة بالنظر إلى ذلك Mass و Temperature قد يتغير قليلاً في المستقبل (على سبيل المثال.إضافة Kelvin ل Temperature)؟وينبغي أن لدي Mass و Temperature الوراثة من واجهة مخصصة لشيء من هذا القبيل IQuantity.

هل كانت مفيدة؟

المحلول

من فضلك راجع @أدريانو تعليق.هذا هو ما احتاجه.

نعم، يمكنك إضافة أي عدد تريده من الممتلكات العامة.للمقارنة، قم بإلقاء نظرة على هذا المنشور هنا على SO: ما هي الاختلافات بين XmlSerializer وBinaryFormatter

نصائح أخرى

يعد التسلسل الثنائي أمرًا صعب الإرضاء بشأن الخصائص التي تتم إضافتها وإزالتها إلى الأنواع.إذا كنت تستخدم برنامج تسلسل متسامح مع الإصدار (على سبيل المثال، برامج تسلسل تعتمد على XML)، فستكون قادرًا على إجراء تسلسل/إلغاء تسلسل بشكل موثوق بين إصدارات الفئات.

قد ترغب في النظر في استخدام protobuf.Net بالنسبة للتسلسل الخاص بك - فهو ناضج وسريع جدًا ومتسامح مع الإصدار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top