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
{
///
/// 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.
///
public class DefaultRenderMvcControllerResolver : SingleObjectResolverBase
{
///
/// Constructor accepting the default RenderMvcController
///
///
public DefaultRenderMvcControllerResolver(Type value)
: base(value)
{
ValidateType(value);
}
///
/// Returns the Default RenderMvcController type
///
///
public Type GetDefaultControllerType()
{
return Value;
}
///
/// Sets the default RenderMvcController type
///
///
public void SetDefaultControllerType(Type controllerType)
{
ValidateType(controllerType);
Value = controllerType;
}
///
/// Ensures that the type passed in is of type RenderMvcController
///
///
private void ValidateType(Type type)
{
if (TypeHelper.IsTypeAssignableFrom(type) == false)
{
throw new InvalidOperationException("The Type specified (" + type + ") is not of type " + typeof (IRenderController));
}
}
}
}