Đây là một câu hỏi nhỏ, chỉ để đảm bảo rằng tôi hiểu được Unity một cách chính xác.Unity và TransientLifetimeManager
Tôi đang sử dụng Unity trong một ứng dụng ASP.NET MVC, và tôi đã đăng ký một loại như sau:
container.RegisterType<IPizzaService, PizzaService>();
Và tôi đang sử dụng nó trong một bộ điều khiển như:
public class PizzaController : Controller
{
private IPizzaService _pizzaService;
public PizzaController(IPizzaService pizzaService)
{
_pizzaService = pizzaService;
}
[HttpGet]
public ActionResult Index()
{
var pizzasModel = _pizzaService.FindAllPizzas();
...
}
}
Mỗi lần yêu cầu trang được thực hiện, một phiên bản mới của IPizzaService
được tiêm và sử dụng. Vì vậy, tất cả điều này hoạt động tốt.
Câu hỏi của tôi: tôi có phải làm gì đặc biệt để vứt bỏ trường hợp này không? Tôi giả sử rằng, một khi yêu cầu đã kết thúc, bộ điều khiển được xử lý và cá thể PizzaService cuối cùng bị thu gom rác.
Nếu tôi cần xử lý xác định đối tượng vì nó sử dụng bối cảnh khung thực thể hoặc tài nguyên không được quản lý, tôi phải ghi đè Vứt bỏ bộ điều khiển và đảm bảo tôi tự mình hủy bỏ các cá thể đó.
Phải không? Nếu không, vui lòng giải thích lý do tại sao :)
Cảm ơn!
Rất nhiều thông tin [ở đây] (http://msdn.microsoft.com/en-us/library/ff660872%28v=pandp.20%29.aspx) nhưng tôi không nghĩ rằng người quản lý thoáng qua yêu cầu bạn vứt bỏ nó. –
@JeroenVannevel Trên thực tế, 'TransientManager' không gọi vứt bỏ cho bạn. –