Sau khi thực hiện một số nghiên cứu trên MEF tôi đi qua các CreationPolicy.Shared tài sản mà theo MSDN:Singleton giống như hành vi với Dependency Injection
Chỉ định rằng một thể hiện duy nhất của liên ComposablePart sẽ được tạo bởi CompositionContainer và được chia sẻ bởi tất cả người yêu cầu.
Âm thanh tốt miễn là tôi luôn đảm bảo rằng một và chỉ một vùng chứa có thể truy cập vào lớp mà tôi xuất với chính sách này. Vì vậy, làm thế nào để tôi đi về đảm bảo rằng chỉ có một container bao giờ truy cập loại xuất khẩu của tôi? Đây là kịch bản của tôi:
Tôi có dịch vụ Windows cần nhấn vào một lớp giống như singleton cho một số dữ liệu trong bộ nhớ. Dữ liệu không liên tục nên tôi muốn nó được tạo mới bất cứ khi nào dịch vụ khởi động nhưng nó không phục vụ mục đích nào khi dịch vụ bị dừng lại. Nhiều chủ đề trong dịch vụ của tôi sẽ cần phải đọc và ghi vào đối tượng này theo kiểu an toàn chỉ vì vậy kế hoạch ban đầu của tôi là kế thừa từ ConcurrentDictionary để đảm bảo hoạt động an toàn cho luồng.
Chủ đề sẽ được khai thác vào lớp này tất cả được kế thừa từ một lớp cơ sở trừu tượng duy nhất, vậy có cách nào để lớp này (và chỉ lớp này) nhập từ MEF và có công việc này theo cách tôi muốn không?
nhờ cho bất cứ lời khuyên bạn có thể có, tôi hơi mới để MEF vì vậy tôi vẫn đang học các ins and outs
Tôi đã sử dụng Ninject với chế độ "singleton" của nó cho một ràng buộc với hiệu ứng tuyệt vời. Chỉ cần cẩn thận để giữ bất cứ điều gì nó được MEF cung cấp cách an toàn thread (không có tác dụng phụ của tiểu bang hoặc funny). – bluevector
@jonnyGold Cảm ơn, tôi đã không sử dụng Ninject trước đây ... nó có piggyback trên MEF ở tất cả hay là nó độc đáo của nó DI framework? – snappymcsnap
Đó là khuôn khổ riêng của nó. Bạn có thể lấy nó thông qua nuget và có chuyên môn cho MVC và WCF. Điều yêu thích của tôi về nó là các ràng buộc được khai báo trong mã, vì vậy bạn không thể mắc lỗi kết hợp kiểu. Hoặc một lỗi đánh máy, cho vấn đề đó. Ngoài ra, các ràng buộc theo ngữ cảnh thực sự mạnh mẽ. – bluevector