2013-10-25 16 views
5

Tôi đang xem một kịch bản nhất định trong một ứng dụng mà hiện tại tôi đang làm việc trênRàng buộc Ninject tại thời gian chạy

Tôi muốn nhân viên quản trị có thể thay đổi cài đặt hệ thống trong ứng dụng.

public class ApplicationSettings 
{ 
//bla bla bla 

} 

lúc khởi động, tôi đã sau ràng buộc

public static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<ApplicationSettings>().ToSelf().InSingletonScope(); 
} 

Tất cả là tốt và tốt như tôi hiểu rằng cùng một ví dụ của các thiết lập ứng dụng sẽ được phục vụ càng lâu càng hạt nhân đang hoạt động

Câu hỏi của tôi là vậy. Điều gì sẽ xảy ra nếu tôi phải thay đổi các ứng dụng khi chạy. Và tôi muốn automaticcally thay đổi giá trị của instance ApplicationSettings trong kernel

Liệu nó có thể làm điều gì đó như

public void ChangeSettings(IKernel kernel, ApplicationSettings setting) 
{ 
    var setting = kernel.Get<ApplicationSettings>(); 
    //change the values of the instance 
} 

Câu hỏi này, Làm thế nào để tôi cập nhật kernel ràng buộc để tham khảo sau này đến singleton dụ sẽ giới thiệu phiên bản mới được sửa đổi

Cảm ơn

Trả lời

10

gì về rebind <>?

public void ChangeSettings(IKernel kernel, ApplicationSettings setting) 
{ 
    var setting = kernel.Get<ApplicationSettings>(); 
    kernel.Rebind<ApplicationSettings>().ToConstant(setting); 
} 
Các vấn đề liên quan