كيفية تعيين حقل من نوع البنية على كائن في Windows Phone 7

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

سؤال

أواجه مشكلة في تعيين حقل على كائن في تطبيق Windows Phone 7 (أظن أنه مرتبط بإطار العمل المضغوط، وليس خاصًا بـ Windows Phone 7).أعتقد أن هذا خاص بتحديد القيم struct أنواع.عادة أستخدم ما يلي:

// fieldName is the name of the field I'm interested in setting
FieldInfo fieldInfo = target.GetType().GetField(fieldName);

// target is the object I'm setting the value on
// value is the value that I am setting
fieldInfo.SetValueDirect(__makeref(target), value);

للأسف SetValueDirect غير موجود على Windows Phone 7، وببساطة يستخدم SetValue لا يفعل أي شيء لاستهداف.هل هناك طريقة بديلة لتعيين struct الحقول على WP7 من خلال التفكير؟

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

المحلول

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

MyStruct val = ...
object boxedVal = val;
fieldInfo.SetValue(boxedVal, newValue);
val = (MyStruct)boxedVal;

بشكل عام، البرمجة الوصفية ضعيفة إلى حد ما فيما يتعلق بالتليف الكيسي.إذا كنت تفعل الكثير من هذا، فهناك طرق للقيام بالبرمجة التعريفية مقدماً عبر .NET الكامل، وفحص مجموعة CF وإنشاء مجموعة CF التي تحتوي على الوظائف التي تحتاجها.لقد نجحت في استخدام IKVM.Reflection لهذا الغرض (انعكاس .NET المدمج لا تستطيع افعل هذا).

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