Tôi đang giải quyết vấn đề này như thế: tiêm các nhà máy phụ thuộc. Trong các nhà máy đó, trước tiên, giải quyết sự phụ thuộc khi nó được đăng ký trong vùng chứa, sau đó "khử lưu lượng hóa" tất cả dữ liệu còn lại: json.net cho phép điền vào các trường trong đối tượng hiện có.
Vì mã nhà máy đi cùng với mã dây của bộ chứa IoC, tôi không nghĩ việc sử dụng container.Resolve
bên trong nhà máy vi phạm quy tắc, mà container
phải được sử dụng chỉ ở một nơi trong mã: nơi tất cả các hệ thống dây điện xảy ra.
Đến bây giờ, tôi đang cố gắng làm cho quá trình này tự động (trái ngược với những gì tôi đã thử nghiệm phương pháp đó tại) bằng cách sử dụng sự phản chiếu. Vâng, không có nhiều thứ còn lại từ chính quá trình khử lưu huỳnh của json.net, một phần của nó được thay thế bằng mã tùy chỉnh, nhưng tôi nghĩ, tại sao phải bận tâm.
Ngoài ra, suy nghĩ / quyết định cuối cùng của bạn về vấn đề này là gì? Sau khi đọc bài này tôi thấy hai cách: deserialize, sau đó tiêm; hoặc tiêm, sau đó khử lưu huỳnh (dân cư). Và tôi vẫn thấy con đường của mình tốt hơn. Sẽ rất vui khi nghe các lập luận phản đối điều này (tôi liên quan, rằng cách của tôi có thể tốt hơn cho trường hợp của tôi, nhưng không thể tưởng tượng một cách sinh động các trường hợp thay thế tốt, khi nó thất bại, chỉ là một số phỏng đoán nhỏ)
This would eliminate the possibility of using Constructor injected DI
-- Tại sao? Bạn vẫn có thể có các trình hướng dẫn được tham số hóa, miễn là bạn bao gồm một hàm tạo mặc định cho các mục đích tuần tự hóa (hàm tạo mặc định có thể là riêng tư, nếu bạn muốn).