Я использую класс BasePageModel для хранения общего кода и свойств.Подклассы получают объекты, внедренные DI, а затем передают их в базовый класс, который обрабатывает их с помощью списка необязательных параметров.Может быть, есть более элегантный способ сделать это, но для меня это хорошо работает.
public class BasePageModel : PageModel {
public BasePageModel(params object[] list) {
foreach (var item in list) {
if (item is ILoggerFactory loggerFactory) {
_logger = loggerFactory.CreateLogger("Projects");
}
if (item is ApplicationDbContext context) {
_dbContext = context;
}
if (item is UserManager<ApplicationUser> manager) {
_userManager = manager;
}
if (item is IHostingEnvironment env) {
_environment = env;
}
}
}
public class IndexModel : BasePageModel {
public IndexModel(ApplicationDbContext context, UserManager<ApplicationUser> userManager, ILoggerFactory loggerFactory) :
base(context, userManager, loggerFactory) { }
}