PropertyResolver Solver ، يحتوي بشكل أساسي على وظيفتين:
احصل على قيمة خاصية PropertyValue المقابلة (GetProperty) من خلال اسم خاصية PropertyName.
استبدل العنصر النائب الخاص بالممتلكات بالتنسيق $ {propertyName: DefaultValue} بالقيمة الفعلية (ResolvePlachers).
ملاحظة: تعد قيم الممتلكات التي تم الحصول عليها من GetProperty جميعها قيمًا بعد استدعاء حاملي ResolvePlaces لاستبدال العناصر النائبة.
مخطط نظام المكون هو كما يلي:
واجهة PropertyResolver:
تحدد هذه الواجهة جميع الوظائف التي يتمتع بها المكون. واحد هو الحصول على القيمة المقابلة من خلال المفتاح. عندما لا يمكن الحصول على القيمة ، هناك 3 خيارات: إرجاع قيمة فارغة ، أو استخدم القيمة الافتراضية المحددة ، أو رمي استثناء حالة غير قانوني. القيمة التي تم الحصول عليها هي نوع السلسلة بشكل افتراضي. بالطبع ، يمكن اعتباره أيضًا تحديد نوع ، والذي يعتمد على محول التحويل لتحويل النوع.
هناك مشكلة أخرى: يمكن أن تحتوي قيمة الخاصية على أصحاب نائبة بتنسيق $ {} ، لذلك تمت إضافة وظيفة أخرى إلى الواجهة هي استبدال العناصر النائبة في قيمة العقار (ملاحظة: لا يُسمح للأصحاب النائب بأسماء السمات ، وحتى إذا كانت موجودة ، فلن يتم استبدال المكونات كأصحاب نائب). عندما لا يمكن استبدال العنصر النائب ، هناك خياران: احتفظ به كما هو أو رمي استثناء معلمة غير قانوني. الواجهة المحددة هي كما يلي:
واجهة التكوين PropertyResolver:
تحدد هذه الواجهة كيفية تكوين المكون نفسه. على سبيل المثال: لقد ذكرت للتو أنه عند الحصول على القيمة ، يمكنك تحديد أي نوع ، والذي يعتمد على محول تحويل النوع. توفر الواجهة الحالية الإعدادات واكتساب ConversionService. بالإضافة إلى ذلك ، يمكنك تكوين تنسيق العناصر النائبة للممتلكات ، بما في ذلك: بادئة العناصر النائمة (الافتراضي هو "$ {") ، لاحقة العناوين الأساسية (الافتراضي هي "}") ، فاصل قيمة العناوين المثقلة (الافتراضي هو: "، يستخدم لفصل PropertyName و DefaultValue). يمكن للمكون أيضًا تعيين السمات التي يجب أن تكون موجودة ، ويمكنها أيضًا التحقق مما إذا كانت السمات التي يجب أن تكون موجودة بالفعل (إذا لم تكن موجودة ، فسيتم طرح استثناء). الواجهة المحددة هي كما يلي:
تجريدي فئة:
فئة التنفيذ التجريدية للواجهات المذكورة أعلاه. وهو ينفذ جميع طرق واجهة تكوين apropertyResolver. فيما يتعلق بطريقة واجهة PropertyResolver ، هناك 3 طرق GetProperty التي تحتاج إلى تنفيذها في الفئات الفرعية (طرق أخرى محملة تدعو هذه الطرق الثلاثة):
سلسلة GetProperty (مفتاح السلسلة) ؛ <T> t getProperty (مفتاح السلسلة ، الفئة <T> TargetType) ؛ <T> الفئة <T> getPropertyAsclass (مفتاح السلسلة ، الفئة <T> الهدف) ؛/*** تحدد الفئة الحالية أيضًا طريقة مجردة إضافية لإرجاع قيمة القيمة التي تم الحصول عليها مباشرة (لا يوجد بديل مستمر). * سوف تحل طريقة getProperty العامة محل العنصر النائب في قيمة القيمة بشكل افتراضي وإعادتها. */سلسلة مجردة محمية getPropertyasRawString (مفتاح السلسلة) ؛ أما بالنسبة لاستبدال العنصر النائب للممتلكات ، فسيتم ذلك بمساعدة اثنين من PropertyPlacehelderhelper PROTWERMER Assistant (فئة الأدوات) ، واحدة من هذين الكائنين هو الوضع الصارم والآخر هو الوضع غير الشامل.
PropertySourcesPropertyResolver Class:
هذه الفئة هي فئة التنفيذ الكاملة الوحيدة في النظام. يأخذ مجموعة PropertySources Source Source Collection (القائمة <PrepertySource> قائمة مصدر خاصية داخليًا) كمصدر لقيمة العقار ، ويتكرر من خلال كل ممتلكات بالترتيب ، ويعود إذا حصلت على قيمة خاصية غير فائقة.