سؤال

وتخيل ما يلي

وهناك نوع T لديه شركة المجال. عند تنفيذ الأسلوب التالي يعمل تماما:

Type t = typeof(T);
t.GetProperty("Company")

مثال: الدعوة التالية أحصل اغية الرغم

Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)

وأي شخص حصل على فكرة؟

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

المحلول

ولقد الكتابة أعلام نظرة متابعة الافتراضي، إذا قمت بتحديد الأعلام الجديدة تحتاج إلى توفير كل المعلومات بحيث يمكن العثور على الممتلكات. على سبيل المثال: BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance

نصائح أخرى

وتحتاج إلى إضافة BindingFlags.Public | BindingFlags.Instance

شكرا، هذا ساعدني في قليل اليوم. كان لي معلومات التدقيق حفظ، ولكن مع غلاف غير صحيح على أسماء الخصائص. (بنيت التدقيق في المتغير dataLayer.) على أي حال لذلك اضطررت لإضافة IgnoreCase كما علم ملزمة، ولكن بعد ذلك لم لا تزال لا تعمل، حتى وجدت بلادي زميل العمل هذه الإجابة. وظيفة الناتجة:

public static void SetProperty(Object R, string propertyName, object value)
{
    Type type = R.GetType();
    object result;
    result = type.InvokeMember(
        propertyName, 
        BindingFlags.SetProperty | 
        BindingFlags.IgnoreCase | 
        BindingFlags.Public | 
        BindingFlags.Instance, 
        null, 
        R, 
        new object[] { value });
}

وهذا هو جزء من فئة أدعو DotMagic.

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