Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Làm thế nào để mvvmcross xử lý phản xạ trong quá trình xây dựng đối tượng


Làm thế nào để mvvmcross xử lý phản xạ trong quá trình xây dựng đối tượng


MVVMCROSS sử dụng sự phản xạ rộng rãi trong quá trình xây dựng đối tượng, đặc biệt thông qua container đảo ngược kiểm soát (IOC), được quản lý bởi ví dụ `mvx.iocprovider` singleton. Dưới đây là tổng quan chi tiết về cách MVVMcross xử lý sự phản ánh trong quá trình xây dựng đối tượng:

Tiêm hàm xây dựng

MVVMcross hỗ trợ tiêm hàm tạo, cho phép nó tự động giải quyết các tham số trong quá trình xây dựng đối tượng bằng cách sử dụng phản xạ. Khi tạo một đối tượng, MVVMcross thực hiện các bước sau:

1. Phản xạ để tìm hàm tạo: MVVMCROSS sử dụng phản xạ để xác định hàm tạo của lớp được khởi tạo.
2. Độ phân giải tham số: Nó kiểm tra các tham số theo yêu cầu của hàm tạo và xác định các giao diện hoặc loại cần thiết.
3. Giải quyết các triển khai đã đăng ký: Đối với mỗi tham số, MVVMCROSS sử dụng `mvx.iocprovider.resolve ()` để có được triển khai đã đăng ký cho giao diện hoặc loại.
4. Gọi Constructor: Một khi tất cả các tham số được giải quyết, MVVMCROSS sử dụng phản xạ để gọi hàm tạo với các tham số được giải quyết.

Quá trình này là đệ quy, có nghĩa là nếu bất kỳ đối tượng được giải quyết nào cũng yêu cầu các đối tượng khác, MVVMCROSS cũng sẽ giải quyết các đối tượng đó [1] [4].

Đăng ký số lượng lớn theo quy ước

MVVMcross cũng hỗ trợ đăng ký số lượng lớn các lớp bằng cách sử dụng phản xạ. Điều này thường được thực hiện trong lớp `app`, kế thừa từ` mvxapplication`. Khung sử dụng sự phản ánh để tìm tất cả các lớp trong lắp ráp cốt lõi kết thúc bằng "dịch vụ" và đăng ký chúng là những người độc thân lười biếng. Điều này đạt được thông qua các bước sau:

1. Tìm các lớp kết thúc bằng "dịch vụ": Phản xạ được sử dụng để tìm tất cả các lớp có tên kết thúc trong "dịch vụ" trong lắp ráp cốt lõi.
2. Xác định giao diện: Đối với mỗi lớp được tìm thấy, MVVMCROSS xác định các giao diện mà nó thực hiện.
3. Đăng ký dưới dạng Singletons lười biếng: Các lớp này sau đó được đăng ký là những người độc thân lười biếng đối với các giao diện tương ứng của chúng. Điều này có nghĩa là chúng không được khởi tạo cho đến khi chúng được yêu cầu lần đầu tiên [2] [4] [7].

ViewModels và Inspection

MVVMCROSS sử dụng cơ chế tiêm nhà xây dựng tương tự cho các chế độ xem. Khi tạo một chế độ xem, MVVMCROSS giải quyết mọi phụ thuộc được chỉ định trong hàm tạo bằng thùng chứa IOC. Điều này cho phép dễ dàng tùy chỉnh các dịch vụ trên các nền tảng khác nhau và tạo điều kiện kiểm tra đơn vị bằng cách cho phép sử dụng các triển khai giả [1] [4].

Tùy chỉnh và AppStart

Lớp `app` chịu trách nhiệm đăng ký các đối tượng tùy chỉnh trên thùng chứa IOC và bắt đầu chế độ xem của ứng dụng. Nếu cần, bạn có thể tùy chỉnh quá trình khởi động bằng cách sử dụng lớp `appstart` tùy chỉnh để quyết định xem nào sẽ trình bày trước [2] [7].

Tóm lại, MVVMcross tận dụng sự phản ánh để tự động hóa quá trình giải quyết các phụ thuộc trong quá trình xây dựng đối tượng, giúp quản lý các biểu đồ đối tượng phức tạp dễ dàng hơn và hỗ trợ phát triển đa nền tảng với mã dành riêng cho nền tảng tối thiểu.

Trích dẫn:
[1)
[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