With AddTransient<IEmailService, EmailService>(), injecting into a controller twice will produce:

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "Different instances". Vòng đời Transient tạo thể hiện mới ở mỗi lần container giải quyết dịch vụ, nên nếu hàm khởi tạo của controller có hai tham số cùng kiểu IEmailService thì hai tham số nhận hai đối tượng EmailService khác nhau, so sánh tham chiếu sẽ ra false. "The same instance" sai vì chỉ Singleton, hoặc Scoped trong cùng một request, mới trả về cùng một đối tượng. "Null references" sai vì IEmailService đã được đăng ký nên container luôn tạo được, null chỉ xuất hiện khi gọi GetService với kiểu chưa đăng ký. "Runtime error" sai vì tiêm hai lần một dịch vụ Transient là hoàn toàn hợp lệ, lỗi lúc chạy chỉ xảy ra khi EmailService cần phụ thuộc chưa được đăng ký.

Cùng chương 3

Xuất hiện trong 1 bộ đề