我在 WPF 应用程序中使用 ninject 的内核作为视图模型定位器。
内核助手类:
public static class IoCKernel
{
private static IKernel kernel;
public static void Init(params NinjectModule[] modules)
{
if (kernel == null)
{
kernel = new StandardKernel(modules);
}
}
public static T Get<T>()
{
return kernel.Get<T>();
}
}
并且ViewModelLocator
公开了如下Get
方法:
public class ViewModelLocator : IViewModelLocator
{
public MainWindowViewModel MainWindowViewModel
{
get
{
return IoCKernel.Get<MainWindowViewModel>();
}
}
}
当需要实例时,它被称为:
IoCKernel.Get<IViewModelLocator>().MainWindowViewModel;
但是,IoCKernel.Get<MainWindowViewModel>()
总是会返回一个新实例。有没有办法让它只适用于一个实例?