حماية الخاصية التبعية

خصائص التبعية يجب اعتبارها بشكل عام من الخصائص العمومية. طبيعة Windows Presentation Foundation (WPF) نظام الخاصية يمنع القدرة على إجراء تعهدات الأمان حول قيمة خاصية التبعية.

يشتمل هذا الموضوع على الأقسام التالية.

  • الاتصال و الأمان لبرامج التضمين و خصائص التبعية
  • نظام كشف الخاصية لخصائص التبعية
  • موضوعات ذات صلة

الاتصال و الأمان لبرامج التضمين و خصائص التبعية

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

في حالة كتابة خصائص التبعية الخاصة بك, يجب التصريح ببرامج التضمين و DependencyProperty الحقل المعرف كأعضاء عامة بحيث لا يحصل المتصلين على معلومات مضللة حول مستوى الوصول الحقيقي لتلك الخاصية (لتطبيق مخزنها كخاصية تبعية).

لخاصية تبعية مخصصة، يمكنك تسجيل الخاصية الخاصة بك كخاصية تبعية للقراءة فقط، و هذا يوفر وسائل فعالة لمنع تعيين خاصية من قبل أي شخص لا تحتوي على مرجع إلى DependencyPropertyKey لذلك الخاصية. لمزيد من المعلومات، راجع خصائص للقراءة فقط التبعية.

ملاحظةملاحظة

تصريح DependencyProperty حقل معرف بخاص غير محظور, و يمكن استخدامه للمساعدة في تقليل مساحة الاسم المكشوفة من فئة مخصصة مباشرةً ولكن مثل هذه الخاصية لا يجب اعتبارها "خاصة" كما وقت تشغيل اللغة العامة (CLR) تعريفات اللغة تعرف مستوى الوصول ذلك للأسباب التي سيتم وصفها في المقطع التالي.

نظام كشف الخاصية لخصائص التبعية

هي غير مفيدة بشكل عام, و من المحتمل أن تكون مضللة ، تصريح DependencyProperty كأي مستوى وصول غير العام. يمنع إعداد مستوى الوصول هذا فقط شخص ما من إمكانية الحصول على مرجع للمثيل من فئة المعرِّف. ولكن توجد أوجه عديدة لنظام الخاصية التي ترجع DependencyProperty كوسيلة لتعريف خاصية معينة كما كان موجوداً على مثيل الفئة أو مثيل فئة مشتقة, و هذا المعرف لا يزال قابل للاستخدام في SetValue استدعاء حتى إذا تم تعريف المعرّف الثابت الأصلي كـ"غير عام ". أيضاً، OnPropertyChanged الأساليب الظاهرية تتلقي معلومات من أي خاصية تبعية موجودة التي تم تغيير قيمتها. بالإضافة إلى ذلك، GetLocalValueEnumerator الأسلوب يقوم بإرجاع معرفات أي خاصية على مثيلات بقيمة معينة محلياً.

التحقق من الصحة والأمان

تطبيق إجراء طلب على ValidateValueCallback و توقع فشل التحقق من الصحة عند فشل طلب منع تعيين خاصية هو ليس آلية أمان كافية. تعيين قيمة عدم التحقق من الصحة التي تم فرضها خلال ValidateValueCallback قد أيضاً يتم منعها بواسطة المتصلين المتطفلون‬, إذا يعمل تلك المتصلين ضمن مجال التطبيق.

راجع أيضًا:

المبادئ

خصائص التبعية المخصصة