Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Có bất kỳ vấn đề nào được biết đến khi sử dụng Microsoft.Extensions.Dependencyinjection với MVVMCROSS


Có bất kỳ vấn đề nào được biết đến khi sử dụng Microsoft.Extensions.Dependencyinjection với MVVMCROSS


Sử dụng microsoft.extensions.dependencyinjection với mvvmcross có thể đưa ra một số thách thức và các vấn đề đã biết:

1. Tính không tương thích với quá trình khởi động MVVMCROSS: MVVMCROSS yêu cầu khả năng giải quyết các thành phần ở trong quá trình thiết lập và sau đó tiếp tục đăng ký nhiều thành phần hơn. Tuy nhiên, microsoft.extensions.dependencyinjection (ms.di) yêu cầu tất cả các thành phần phải được đăng ký trước khi gọi `.Build ()` trên bộ sưu tập dịch vụ. Sự khác biệt cơ bản này làm cho hai hệ thống không tương thích mà không cần thêm các cách giải quyết, chẳng hạn như dịch dịch dịch thuật thủ công từ container này sang container khác [1].

2. Cách tiếp cận này giới thiệu một quá trình khởi động hai giai đoạn, có thể cồng kềnh và có thể dẫn đến sự phức tạp và các vấn đề tiềm năng bổ sung [1].

3. Giới hạn tiêm phụ thuộc: Container IOC của MVVMCROSS xử lý khía cạnh singleton ở cấp độ giao diện, không phải là loại khởi tạo. Điều này có nghĩa là nếu một lớp thực hiện nhiều giao diện, MVVMCROS có thể tạo các phiên bản riêng cho mỗi giao diện trừ khi được quản lý rõ ràng [4]. Mặc dù điều này không liên quan trực tiếp đến Ms.DI, nhưng nó nhấn mạnh sự cần thiết phải quản lý cẩn thận khi tích hợp các hệ thống tiêm phụ thuộc khác nhau.

4 Ví dụ, những thay đổi trong logic lựa chọn hàm tạo giữa các phiên bản có thể ảnh hưởng đến mức độ phụ thuộc được tiêm [2].

Để khắc phục những thách thức này, các nhà phát triển thường chọn tăng cường chức năng của MVVMcross mà không cần thay thế container IOC cốt lõi của nó. Điều này cho phép sử dụng các khung phun phụ thuộc bổ sung như MS.DI cùng với MVVMcross, cung cấp sự linh hoạt trong việc chọn nhà cung cấp IOC [1] [5]. Tuy nhiên, điều này đòi hỏi phải thiết lập và quản lý cẩn thận để tránh xung đột và đảm bảo tích hợp liền mạch.

Tóm lại, trong khi sử dụng microsoft.extensions.dependencyinjection với mvvmcross là có thể, nó đòi hỏi phải xem xét cẩn thận quá trình khởi động, không tương thích tiềm năng và quản lý cẩn thận các phụ thuộc để tránh các vấn đề đã biết.

Trích dẫn:
[1] https://github.com/mvvmcross/mvvmcross/issues/4436
[2] https://github.com/mvvmcross/mvvmcross/issues/4183
[3] https://docs.particular.net/nservicebus/dependency-injection/extensions-dependencyinjection
[4] https://stackoverflow.com/questions/23700121/possible-bug-with-dependency-injection-on-mvvmcross
[5] https://github.com/mvvmcross/mvvmcross/issues/3804
[6] https://www.mvvmcross.com/Documentation
.
[8] https://www.mvvmcross.com/Documentation