2010-03-12 26 views
7

Khi một đối tượng trong Ninject bị ràng buộc với InTransientScope(), đối tượng không được đặt vào bộ nhớ cache, vì nó, er, thoáng qua và không bị xáo trộn.Khi nào là đối tượng Phạm vi thoáng qua bị hủy kích hoạt trong Ninject?

Khi hoàn thành với đối tượng, tôi có thể gọi kernel.Release(obj); điều này đi qua Cache nơi nó truy xuất mục được lưu trong bộ nhớ cache và gọi Pipeline.Deactivate bằng cách sử dụng mục được lưu trong bộ nhớ cache.

Nhưng vì các đối tượng tạm thời không được lưu trong bộ nhớ cache, điều này không xảy ra. Tôi đã không thể tìm ra nơi (hoặc người) thực hiện việc ngừng hoạt động cho các đối tượng thoáng qua. Hoặc là giả định rằng các đối tượng tạm thời chỉ được kích hoạt và nếu tôi muốn một đối tượng không thể kích hoạt, tôi cần sử dụng một số phạm vi khác?

Trả lời

8

Giả định của bạn là chính xác. Các đối tượng tạm thời không được theo dõi trong Ninject và không được kiểm soát trong đường dẫn ngừng hoạt động. Đó là trách nhiệm của bạn để làm sạch các trường hợp thoáng qua. Nếu bạn muốn hạt nhân quản lý các cá thể của bạn, thì bạn cần phải sử dụng một phạm vi được xây dựng trong hoặc một phạm vi tùy chỉnh.

+0

Cảm ơn. Điều 'thú vị' là chúng được kích hoạt tốt, vì vậy có một sự không phù hợp trong đầu của tôi (một cái gì đó được kích hoạt nên được hủy kích hoạt). – nwahmaet

Các vấn đề liên quan