ألا ينبغي استخدام FieldInfo.setValue لتعيين ValueType إلى فشل الفرق؟

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

  •  01-10-2019
  •  | 
  •  

سؤال

(متعلق ب PropertyInfo setValue و Nulls)

لو كنت أملك public class Thing { public int X; }, ، أ Thing o, ، و FieldInfo fi هذا يشير إلى X الحقل ، لماذا من القانوني الاتصال fi.SetValue(o, null)؟ وقت التشغيل يحدد الحقل X إلى الصفر ، أي default(int) بدلا من الشكوى أن أ ValueType لا يمكن ضبطها على null.

هل يعرف أي شخص اختيار التصميم وراء هذا السلوك ، والذي على الأقل من C# ينتهك مبدأ أقل من الدهشة؟

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

المحلول

النص الوارد في مربع الاستثناءات ArgumentException يشير إلى أن القيمة التي تم تمريرها تخضع ل تحويلات, ، مما يفسر سبب نجاحه.

لا يمكن تحويل معلمة القيمة وتخزينها في الحقل.

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

قد تحاول الاتصال إريك ليبرت ، في حين أن هذا سؤال BCL/CLR بدلاً من C#، هناك فرصة أنه سيعرف الإجابة أو يعرف شخصًا يفعل. إما ذلك أو تكون قادرًا على إعطاء تخمين جيد جدًا.

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