Files
Umbraco-CMS/src/Umbraco.Web/Mvc/DefaultRenderMvcControllerResolver.cs

62 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using Umbraco.Core;
using Umbraco.Core.ObjectResolution;
using Umbraco.Core.Plugins;
namespace Umbraco.Web.Mvc
{
/// <summary>
/// A resolver used to resolve the default RenderMvcController that is used to render any front-end
/// Umbraco page when using MVC when there are no routes hijacked.
/// </summary>
public class DefaultRenderMvcControllerResolver : SingleObjectResolverBase<DefaultRenderMvcControllerResolver, Type>
{
/// <summary>
/// Constructor accepting the default RenderMvcController
/// </summary>
/// <param name="value"></param>
public DefaultRenderMvcControllerResolver(Type value)
: base(value)
{
ValidateType(value);
}
/// <summary>
/// Returns the Default RenderMvcController type
/// </summary>
/// <returns></returns>
public Type GetDefaultControllerType()
{
return Value;
}
/// <summary>
/// Sets the default RenderMvcController type
/// </summary>
/// <param name="controllerType"></param>
public void SetDefaultControllerType(Type controllerType)
{
ValidateType(controllerType);
Value = controllerType;
}
/// <summary>
/// Ensures that the type passed in is of type RenderMvcController
/// </summary>
/// <param name="type"></param>
private void ValidateType(Type type)
{
if (TypeHelper.IsTypeAssignableFrom<IRenderController>(type) == false)
{
throw new InvalidOperationException("The Type specified (" + type + ") is not of type " + typeof (IRenderController));
}
}
}
}