Tôi đang tạo một ứng dụng C# nhỏ, hiện đang bao gồm một hội đồng cốt lõi và một hội đồng winforms. Tôi nhận ra tôi có lẽ không thực sự cần Ninject trong một điều nhỏ như thế này, nhưng tôi muốn thử nó.C#, Ninject: Bạn đặt hạt nhân và mô-đun của bạn ở đâu?
Dù sao, để làm việc với Ninject tôi đã hiểu rằng bạn sẽ viết một tập hợp các mô-đun, bản đồ lớp này được trả về và cứ tiếp tục như vậy. Sau đó bạn sẽ tạo một thể hiện của IKernel
và tải các mô-đun của bạn vào đó.
Nhưng, tôi giữ các mô-đun đó ở đâu? Và tôi giữ hạt nhân ở đâu? Đi đâu?
Tôi chỉ đang tìm kiếm một cách kinh điển để làm điều này và nghĩ "tuyệt vời!" khi tôi thấy bạn liên kết một. Tin xấu, mã đó là TẤT CẢ UNTHREADSAFE. Nếu tôi nên bọc hạt nhân trong một singleton tôi có thể làm điều đó bản thân mình một cách an toàn (gợi ý, constructor tĩnh) nhưng được cảnh báo tất cả những người đến đây trong tương lai: Bài viết liên kết là một thực hiện hoàn toàn không-thread-an toàn. –
@JimmyHoffa Tôi đồng ý không an toàn (đề xuất áp dụng cách tiếp cận bạn chọn từ http://csharpindepth.com/articles/general/singleton.aspx). Tuy nhiên tốt hơn nhiều so với đó là để đi với điểm chính của phản ứng của tôi, đó là để có một gốc thành phần trong đó có một nơi rõ ràng nơi khởi tạo có thể diễn ra để có sự cần thiết cho chủ đề an toàn (trong số các vấn đề khác) ra khỏi hình ảnh hoàn toàn. –
Tôi không quen thuộc với bố cục gốc của bạn, nhưng không có quyền truy cập vào hạt nhân, làm cách nào để bạn yêu cầu các đối tượng mà bạn muốn hàm tạo được tiêm? trong giao diện người dùng của bạn, bạn muốn truy cập vào 'UserManager' có' IUserRepository' lúc xây dựng; làm thế nào để bạn nhận được rằng 'UserManager' mà không truy cập vào hạt nhân (thông qua một cái gì đó giống như một định vị dịch vụ)? Bạn không thể chỉ 'mới UserManager (???);' và mong đợi điều phải được trao cho nó constructor có thể bạn? –