في .NET ، هل يمكنك استخدام الانعكاس للحصول على جميع الطرق غير الموروثة للفصل؟
-
28-10-2019 - |
سؤال
بسبب هذه المشكلة هنا ، أحاول كتابة JsonConverter مخصصيعالج الحالات التي تصنف فيها قائمة أو مجموعة ، ثم تضيف خصائص إضافية إليها.على هذا النحو ، سيكون أحد الأساليب هو تجاهل جميع خصائص الفئة الأساسية وإجراء تسلسل فقط لتلك الموجودة في الفئة المحددة.(من الناحية الفنية ، لن ينجح هذا لأنه إذا قمت بفصل هذه الفئة الفرعية ، فإنك تكسر التسلسل ، لكن هذا جعلني أتساءل ...)
هل من الممكن عن طريق التفكير (حسنًا ، أعلم أن الإجابة هي "نعم" لأن Reflector يفعل ذلك بالضبط ، لكني لا أعرف كيف) للحصول على الأعضاء الذين تم تعريفهم في الفصل نفسه فقط على عكس أولئك الذينوارث؟على سبيل المثال ...
Genacodicetagpreفي هذه الحالة ، أريد التفكير في رمز الترقيم العام والحصول فقط على رمز الترقيم العام ورمز الترقيم العام مع تجاهل رمز الترقيم العام ورمز الترقيم العام.إذن ، هل يمكن أن يكون ذلك كيف يتم ذلك؟
م
المحلول
أثناء استدعاء أسلوب "GetMembers" للحصول على أعضاء النوع ، يمكنك تحديد "DeclaredOnly" في علامة الربط.
نصائح أخرى
يتعين عليك تحديد جميع الأعضاء في رمز الترقيم العام والاحتفاظ فقط بالأعضاء الذين لديهم رمز رمز عام.
مع LINQ ، شيء من هذا القبيل (مبالغة): Genacodicetagpre
أو مع التحميل الزائد للرمز العام: Genacodicetagpre
تقبل الكثير من وظائف الانعكاس معلمة من النوع BindingFlags .يتضمن هذا التعداد قيمة معلن عنها فقط:
تحدد أنه يجب النظر فقط في الأعضاء المصرح لهم على مستوى التسلسل الهرمي للنوع المقدم.لا يتم اعتبار الأعضاء الموروث.
MemberInfo.DeclaringType
ما تحتاج إليه.للحصول على أعضاء محددين بشكل مباشر في النوع X ، قم بتصفية الأعضاء عن طريق الترميز العام