ممارسات تسلسل C# للكائن بأنواع مخصصة
-
12-12-2019 - |
سؤال
لقد قمت بإنشاء بعض الأنواع المخصصة على سبيل المثال:
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 بالنسبة للتسلسل الخاص بك - فهو ناضج وسريع جدًا ومتسامح مع الإصدار.