我正在尝试为我的ASP.NET MVC 5 Controller创建一个构造函数,该构造函数用于初始化Repository,Mapper和Services等属性。对于组页面,这是我编写的代码:
public ApplicationDbContext Db { get; private set; }
public GroupMapper Mapper { get; private set; }
public ImageUploadService ImageUploader { get; private set; }
public GroupsController()
{
this.Db = new ApplicationDbContext();
this.Mapper = new GroupMapper(Db);
this.ImageUploader = new ImageUploadService(this.Server);
}
这里的问题是,父控制器aint的属性已初始化,因此无法在子构造函数中使用。在这种情况下,属性为'this.Server',但在对象完成之前该值不存在。如果我在控制器操作中使用'this.Server',它就可用了。但是如果我在构造函数中使用它,它就不会,而是返回一个空引用。
我不知道为什么ASP.NET MVC会以这种方式运行,我想当我创建一个子控制器时,所有父属性都已存在,但我错了。当我使用ImageUploader服务时,这会导致一个问题,因为依赖项'this.Server'为空,我遇到了大量错误。
那么有谁知道如何修复或解决这个问题?这真让我感到惊讶,我不知道我能做些什么。