protected Type DetectInstantiationType(ControllerContext controllerContext, ModelBindingContext bindingContext, Type typeToCreate)
{
var typeValue = _typeStampOperator.DetectTypeStamp(bindingContext, this);
if (String.IsNullOrEmpty(typeValue))
return typeToCreate;
var derivedType = DerivedTypeModelBinderCache.GetDerivedType(typeValue);
if (derivedType != null)
return derivedType;
throw new InvalidOperationException(string.Format("unable to located identified type '{0}' as a variant of '{1}'", typeValue, typeToCreate.FullName));
}