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 ánLờ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
Given the code:
builder.Services.AddScoped<IOrderService, OrderService>();
How will OrderService behave?Có lời giảiCâu hỏiservices.AddTransient<ILogger, ConsoleLogger>(); What does this code do?Có lời giảiCâu hỏiWhich of the following is an example of a situation where a Scoped service lifetime would be appropriate?Có lời giảiCâu hỏiCả 20 câu của chủ đề20 câu