我想用 MVP 模式实现 CastleWindsor,但是当调用存储库以获取一些数据时,我不断收到“对象引用未设置为 Presenter 上的对象引用”。
我就是这样做的,我想知道是否有什么问题,所以如果可以的话,请告诉我:
主持人:
public class CategoryPresenter
{
ICategoryRepository categoryRepository;
ICategoryView categoryView;
public CategoryPresenter(ICategoryView _categoryView, ICategoryRepository _categoryRepository)
{
categoryView = _categoryView;
categoryRepository = _categoryRepository;
}
//public CategoryPresenter(ICategoryView _categoryView) : this (_categoryView, new CategoryRepository())
//{ }
public CategoryPresenter(ICategoryView _view)
{
categoryView = _view;
}
public IEnumerable<object> GetActiveCategories()
{
return categoryRepository.GetActiveCategories();
}
}
国际奥委会类:
public static class IoC
{
public static IWindsorContainer windsorContainter { get; set; }
}
IoCConfig 类:
类 IoCConfig {
public static IWindsorContainer RegisterCastleWindsorContainer()
{
IWindsorContainer windsorContainer = new WindsorContainer()
.Install(new RepositoryInstaller())
IoC.windsorContainter = windsorContainer;
return windsorContainer;
}
}
安装类:
public class RepositoryInstaller: IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<ICategoryRepository>().ImplementedBy<CategoryRepository>).LifestyleTransient());
}
}
最后在 Global.ascx 文件中,我在 App_Start 执行此操作:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
IoCConfig.RegisterCastleWindsorContainer();
}
有了这个,错误信息如上所述;错误发生在演示者的方法:GetActiveCategories();
正如您在代码中看不到的那样,我在容器上调用了 resolve 方法。
如果您有任何建议,请告诉我。
谢谢你。