Trong quá khứ, tôi sử dụng swiftsuspenders là bộ điều khiển IoC 3 ActionScript. Về cơ bản phiên bản đầu tiên của switfsuspender có cái gì đó tương tự như hạt nhân Ninject được gọi là kim phun.Tôi cần nhiều ví dụ thực tế hơn Ninject
Nếu tôi muốn tạo bộ phun ứng dụng (với giả sử ánh xạ phù hợp nhất được sử dụng trong suốt ứng dụng), tôi đã phải tiêm chính bộ phun trong các lớp ứng dụng.
Tôi tự hỏi bây giờ thực hành sử dụng kernel.get < là gì trong số nhiều lớp trong ứng dụng. Tôi có nên tiêm hạt nhân không?
Cá nhân tôi muốn sử dụng kernel.inject hơn nhưng nếu tôi có thể thực hiện kernel.inject, tôi có thể thực sự chèn các phụ thuộc theo cách thủ công, có lẽ tốt hơn (hôn).
Các trường hợp kiểm tra rất hay, nhưng chúng nằm xa các vấn đề thực tế thực tế, vì vậy tôi hy vọng bạn có thể giúp tôi làm rõ điểm này. Cảm ơn bạn.
Chỉnh sửa: Tôi nhận thấy rằng một số người nói về "thùng chứa gốc", Có vẻ như đó là khái niệm tôi đang tìm kiếm. Làm thế nào tôi nên thiết lập một container gốc và để cho các lớp ứng dụng khác biết điều đó?
Mẫu mã Edit2 (xin vui lòng tha thứ cho lỗi, nó chỉ là ví dụ rượu sake):
class SomeClass
{
public SomeClass()
{
Command cmd = new Command();
cmd.execute();
}
}
class SomeOtherClass:ISomeOtherClass
{
public void allright()
{
//right
}
}
class Command
{
ISomeOtherClass dependency;
void execute()
{
dependency.allright();
}
}
Program.Main()
{
IKernel kernel = new StandardKernel();
kernel.Bind<SomeClass>().ToSelf().InSingletonScope();
kernel.Bind<ISomeOtherClass>().To<SomeOtherClass>();
SomeClass sc = kernel.Get<SomeClass>();
}
tôi đã không kiểm tra này được nêu ra, bởi vì tôi vẫn đang chiến đấu với một số vấn đề khởi tạo, nhưng câu hỏi của tôi là, làm thế nào lớp lệnh có thể biết về SomeOtherClass không? Giả thuyết hiện tại của tôi là tiêm hạt nhân vào SomeClass và sử dụng phương thức Tiêm.
Cảm ơn bạn đã trả lời nó có ý nghĩa, nhưng trong khi nó là chính xác, nó chỉ nói rằng tất cả các phụ thuộc phải được biết trước. Điều gì xảy ra khi điều này là không thể? (Tất nhiên những gì tôi nói có ý nghĩa chỉ khi các đối tượng được tạo động mà có thể xảy ra) – sebas
giả sử rằng SomeClass phải tạo một số dứt khoát của các đối tượng động. Giống như SomeClass trở thành Level và nó phải tạo ra 30 ngôi sao. các ngôi sao có một số phụ thuộc, làm thế nào có thể Cấp tiêm những phụ thuộc vào các ngôi sao bằng cách sử dụng hạt nhân? – sebas
Đó là một câu hỏi hay và bạn đang di chuyển ra ngoài các câu hỏi tiêm phụ thuộc đơn giản có thể được trả lời theo định dạng này. Loại tình huống này (tạo đối tượng phức tạp) có xu hướng đòi hỏi thêm một phần nữa, đó là lý do tại sao Remo đề cập đến các nhà máy trong câu trả lời của anh ta. Bạn nên điều tra hoặc tạo ra một nhà máy xây dựng sao và tiêm nó vào SomeClass, hoặc có Ninject giải quyết các ngôi sao bằng cách sử dụng một phương thức nhà máy riêng của mình hoặc Bind(). ToProvider(). –