ما هو الفرق بين [اختياري الحقول] و [غير المرتبط

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

  •  24-09-2019
  •  | 
  •  

سؤال

جئت عبر هذا السؤال حول Transcender:

ما الذي يجب عليك تطبيقه على حقل إذا لم تكن قيمته مطلوبة أثناء التخلص من التسلسل؟

ME = [nonserialized] ، الجواب = [اختياري الحقول

كان رد فعل القناة الهضمية غير مؤهلة لكن Transcender يقول إنني مخطئ. لدي فكرة جيدة عما يجب البحث عنه بقدر ما يتعلق الأمر بالسمات [غير المعدنية] ، لكن ما زلت أحب ذلك حقًا.

بقدر ما أستطيع أن أقول أن الأول لديه علاقة مع النزاعات في الإصدار بين الإصدارات الأحدث والأكثر من نفس التجمع. هذا الأخير يهتم أكثر بعدم تسلسل الحقل fultstop. هل هناك أي شيء آخر قد يميز هذين الفمين؟ لا يقول MSDN الكثير عن هذا الأمر لأن كلاهما يستخدم على pinaryformatters و soapformatter مع xmlformatter باستخدام XmlignoreAttribute.

سؤالي الثاني هو هل يمكنك خلط وتطابق أي من السمات؟ لم أستخدمها بعد.

ما عليك سوى إلقاء هذا واحد هناك ، ولكن هل إجابتي لها علاقة بالطريقة [ondeserialized] ويتم تنفيذ واجهة ideserizationCallback؟

تحديث:

أعلم أن سمة الحقل الاختيارية لا تقوم بتسلسل القيمة التي يحتفظ بها أحد أعضاء البيانات ولكن غير المقتطف لن يقوم حتى بتسلسل عضو البيانات أو قيمته.

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

المحلول

يتم استخدام هاتين السمة للجوانب المعاكسة لمعادلة التسلسل.

عندما تستخدم [NonSerialized], ، أنت تقول "لا ينبغي أن يتم تسلسل هذا الحقل على الإطلاق" - لذلك فهو أكثر من سمة "توفير الوقت". في الأساس ، أنت تقول إن المجال لا يهم الحالة التسلسلية للكائن.

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

نصائح أخرى

مجرد لعب اللغة الإنجليزية ، غير مطلوب و اختياري يعني نفس الشيء في هذه الحالة.

لسؤالك الأول ، قمت بتسميره إلى حد كبير على رأسه. [OptionalField] يسمح بشكل أساسي بالتسلسلات القديمة أن تكون متوافقة مع التعريفات الأحدث. [NonSerialized] يعني أنك لن تجدها في البيانات المسلسل.

بالنظر إلى الاختلافات ، لا أستطيع أن أتخيل سبب وضعك على حد سواء على حقل واحد ، لكنني أعتقد أن المترجم سيشتكي.

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