Tôi hiện đang sử dụng đoạn mã sau:gì sẽ xảy ra với việc sử dụng tuyên bố khi tôi chuyển sang Dependency Injection
public class MyProvider
{
public MyProvider()
{
}
public void Fetch()
{
using (PopClient popClient = new PopClient())
{
....
}
}
}
Bởi vì tôi muốn để có thể kiểm tra đơn vị phương pháp Fetch và do thực tế rằng tôi có thể' t mock PopClient, tôi tạo ra một giao diện và một lớp bao bọc mà gọi vào PopClient. đang cập nhật của tôi trông giống như:
public class MyProvider
{
private readonly IPopClient popClient;
public MyProvider(IPopClient popClient)
{
this.popClient = popClient;
}
public void Fetch()
{
using (var pop3 = popClient)
{
....
}
}
}
Tôi đang sử dụng Ninject cho dependency injection và tôi không hoàn toàn chắc chắn những gì loại có hiệu lực báo cáo kết quả sử dụng sẽ có trong mã cập nhật kể từ Ninject đã tạo một thể hiện của PopClient và tiêm nó vào hàm tạo.
Tuyên bố sử dụng sẽ vứt bỏ đối tượng pop3 và để đối tượng popClient một mình để Ninject có thể xử lý nó hoặc câu lệnh sử dụng sẽ can thiệp vào Ninject không?
Cách tiếp cận phù hợp trong trường hợp này là gì? Mọi hiểu biết sẽ rất hữu ích.
Nếu bạn vứt bỏ popClient, điều gì xảy ra với đối tượng MyProvider?! Không phải nó cũng được xử lý sao? Bởi vì chỉ còn lại một thành viên chỉ đọc được xử lý trong lớp. Nếu nó là như vậy, tôi nghĩ rằng nó là tốt hơn để đặt một phương pháp vứt bỏ cho lớp MyProvider. –