1 namespace System.Web.Mvc {
4 public abstract class BuildManagerViewEngine : VirtualPathProviderViewEngine {
5 private IBuildManager _buildManager;
6 private IViewPageActivator _viewPageActivator;
7 private IResolver<IViewPageActivator> _activatorResolver;
9 protected BuildManagerViewEngine()
10 : this(null, null, null) {
13 protected BuildManagerViewEngine(IViewPageActivator viewPageActivator)
14 : this(viewPageActivator, null, null) {
17 internal BuildManagerViewEngine(IViewPageActivator viewPageActivator, IResolver<IViewPageActivator> activatorResolver, IDependencyResolver dependencyResolver) {
18 if (viewPageActivator != null) {
19 _viewPageActivator = viewPageActivator;
22 _activatorResolver = activatorResolver ?? new SingleServiceResolver<IViewPageActivator>(
24 new DefaultViewPageActivator(dependencyResolver),
25 "BuildManagerViewEngine constructor"
30 internal IBuildManager BuildManager {
32 if (_buildManager == null)
33 _buildManager = new BuildManagerWrapper();
37 _buildManager = value;
41 protected override bool FileExists(ControllerContext controllerContext, string virtualPath) {
42 return BuildManager.FileExists(virtualPath);
45 protected IViewPageActivator ViewPageActivator {
47 if (_viewPageActivator != null) {
48 return _viewPageActivator;
50 _viewPageActivator = _activatorResolver.Current;
51 return _viewPageActivator;
55 internal class DefaultViewPageActivator : IViewPageActivator {
56 Func<IDependencyResolver> _resolverThunk;
58 public DefaultViewPageActivator()
62 public DefaultViewPageActivator(IDependencyResolver resolver) {
63 if (resolver == null) {
64 _resolverThunk = () => DependencyResolver.Current;
67 _resolverThunk = () => resolver;
71 public object Create(ControllerContext controllerContext, Type type) {
72 return _resolverThunk().GetService(type) ?? Activator.CreateInstance(type);