public virtual Func <PageContext, ViewContext, object> CreatePageFactory(CompiledPageActionDescriptor actionDescriptor) { if (!typeof(PageBase).GetTypeInfo().IsAssignableFrom(actionDescriptor.PageTypeInfo)) { throw new InvalidOperationException(Resources.FormatActivatedInstance_MustBeAnInstanceOf( _pageActivator.GetType().FullName, typeof(PageBase).FullName)); } var activatorFactory = _pageActivator.CreateActivator(actionDescriptor); var modelType = actionDescriptor.ModelTypeInfo?.AsType() ?? actionDescriptor.PageTypeInfo.AsType(); var propertyActivator = new RazorPagePropertyActivator( actionDescriptor.PageTypeInfo.AsType(), modelType, _modelMetadataProvider, _propertyAccessors); return((pageContext, viewContext) => { var page = (PageBase)activatorFactory(pageContext, viewContext); page.PageContext = pageContext; page.Path = pageContext.ActionDescriptor.RelativePath; page.ViewContext = viewContext; propertyActivator.Activate(page, viewContext); return page; }); }