Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف يتعامل mvvvmcross مع انعكاس أثناء بناء الكائن


كيف يتعامل mvvvmcross مع انعكاس أثناء بناء الكائن


يستخدم MVVMCross الانعكاس على نطاق واسع أثناء بناء الكائنات ، وخاصة من خلال انقلابها في حاوية التحكم (IOC) ، والتي تتم إدارتها بواسطة مثيل Singleton Mvx.iocprovider` فيما يلي نظرة عامة مفصلة على كيفية تعامل MVVMcross مع الانعكاس أثناء بناء الكائن:

حقن المنشئ

يدعم MVVMCross حقن المنشئ ، والذي يسمح له بحل المعلمات تلقائيًا أثناء بناء الكائن باستخدام الانعكاس. عند إنشاء كائن ، يقوم MVVMcross بتنفيذ الخطوات التالية:

1. الانعكاس للعثور على المُنشئ: يستخدم MVVMCROSS انعكاسًا لتحديد مُنشئ الفئة التي يتم إنشاء مثيل لها.
2. دقة المعلمة: يفحص المعلمات المطلوبة من قبل المنشئ ويحدد الواجهات أو الأنواع اللازمة.
3. حل التطبيقات المسجلة: لكل معلمة ، يستخدم MVVMCross `mvx.iocprovider.resolve ()` للحصول على التنفيذ المسجل للواجهة أو النوع.
4. استدعاء مُنشئ: بمجرد حل جميع المعلمات ، يستخدم MVVMCross انعكاسًا لاستدعاء المُنشئ بالمعلمات التي تم حلها.

هذه العملية متكررة ، وهذا يعني إذا كان أي من الكائنات التي تم حلها تتطلب أيضًا كائنات أخرى ، فإن MVVMcross ستحلها أيضًا [1] [4].

التسجيل بالجملة حسب الاتفاقية

يدعم MVVMCROSS أيضًا التسجيل بالجملة للفئات باستخدام الانعكاس. يتم ذلك عادة في فئة "التطبيق" ، والتي ترث من "MVXAPPLICATION". يستخدم الإطار انعكاسًا لإيجاد جميع الفصول في التجميع الأساسي الذي ينتهي بـ "الخدمة" ويسجلها على أنها مفردة كسول. يتم تحقيق ذلك من خلال الخطوات التالية:

1. ابحث عن الفصول التي تنتهي بـ "الخدمة": يتم استخدام الانعكاس للعثور على جميع الفئات مع أسماء تنتهي في "الخدمة" داخل التجميع الأساسي.
2. تحديد الواجهات: لكل فئة موجودة ، يحدد MVVMCROSS الواجهات التي تنفذها.
3. سجل كمسندات كسول: ثم يتم تسجيل هذه الفصول كأغنية كسول ضد واجهاتها. هذا يعني أنهم لم يتم إنشاء مثيل له حتى يتم طلبهم لأول مرة [2] [4] [7].

ViewModels وحقن التبعية

يستخدم MVVMCROSS نفس آلية حقن المنشئ لأرضيات VINEMODELS. عند إنشاء ViewModel ، يحل MVVMcross أي تبعيات محددة في المنشئ باستخدام حاوية IOC. يتيح ذلك تخصيصًا سهلاً للخدمات عبر منصات مختلفة ويسهل اختبار الوحدة من خلال تمكين استخدام تطبيقات وهمية [1] [4].

التخصيص و AppStart

فئة "التطبيق" مسؤولة عن تسجيل كائنات مخصصة على حاوية IOC وبدء تشغيل Application ViewModels. إذا لزم الأمر ، يمكنك تخصيص عملية بدء التشغيل باستخدام فئة `appstart` مخصصة" لتحديد أي ViewModel لتقديمها أولاً [2] [7].

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

الاستشهادات:
[1] https://www.mvvmcross.com/documentation/fundamentals/dependency injection
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-core-project/adding-an-app-class
[3] http://wojosoftware.com/software/mvvmcross/
[4] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://github.com/media-tools/sqlite-net-extensions
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[10] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup