أفضل الممارسات من أجل التحميل كائن من تسلسل XML في C#

StackOverflow https://stackoverflow.com/questions/207888

سؤال

تحياتي

أنا كائن معين والتي يمكن بناؤها من ملف ، على هذا النحو:

public class ConfigObj
{
     public ConfigObj(string loadPath)
     {
          //load object using .Net's supplied Serialization library
          //resulting in a ConfigObj object
          ConfigObj deserializedObj = VoodooLoadFunction(loadpath); 

          //the line below won't compile
          this = thisIsMyObj; 
     }
}

أريد أن essense ، ويقول "حسنا, و الآن هذا الكائن لقد إلغاء تسلسل هذا الكائن الذي نحن في الواقع." هناك عدة طرق للقيام بذلك, وأنا أتساءل التي تعتبر من أفضل الممارسات.أفكاري:

  • بناء نسخة-في-لي وظيفة نسخ الكائن الحقل من الحقل.هذا هو التنفيذ الحالي و انا متأكد انها فكرة رهيبة منذ كلما عضو جديد يضاف إلى كائن أنا بحاجة إلى أن نتذكر أيضا أن إضافته إلى 'نسخة-في-لي وظيفة و لا يوجد طريقة للصيانة.
  • بناء أسلوب ثابت عن ConfigObj الصف الذي يعمل بمثابة الأمر الواقع منشئ التحميل الكائن.هذا يبدو أفضل بكثير ولكن ليس أفضل الممارسات-y.

أنا لست سعيدا تماما مع أي من البلدين ، على الرغم من.ما هو معترف به أفضل الممارسات هنا ؟

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

المحلول

الخيار الثاني هو ما يسمى طريقة مصنع و هو تصميم تقنية.إذا كنت لا تستخدم هذه التقنية ، قد تجد أن كنت بحاجة إلى معرفة نوع الفئة سوف تحميل قبل تحميل فعلا فئة.إذا قمت بتشغيل في هذه الحالة ، يمكنك استخدام مستوى أعلى نوع من المصنع التي تبدو في تيار يدعو طريقة مصنع لهذا النوع المناسب من الدرجة.

نصائح أخرى

لا يوجد شيء خاطئ مع وجود أسلوب ثابت بدلا من منشئ.في الواقع, وقد عدد من المزايا.

أنا دائما أذهب مع أسلوب ثابت.عادة هو نوع من التسلسل الهرمي التي يتم تحميلها ، ولذلك فقط الكائن الجذر يحتاج الأسلوب.و هذا ليس حقا النهج المألوف في .NET framework (مثلا ، الرسومات.FromImage) ، لذلك ينبغي أن يكون على ما يرام مع المستخدمين من الفئة الخاصة بك.

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