/// <summary>
        /// Gets the Telerik View Component Factory
        /// </summary>
        /// <param name="helper">The helper.</param>
        /// <returns>The Factory</returns>
        public static ViewComponentFactory <TModel> Telerik <TModel>(this HtmlHelper <TModel> helper)
        {
            Guard.IsNotNull(helper, "helper");

            ViewContext     viewContext = helper.ViewContext;
            HttpContextBase httpContext = viewContext.HttpContext;

            ScriptWrapperBase scriptWrapper = DI.Current.Resolve <ScriptWrapperBase>();
            IClientSideObjectWriterFactory clientSideObjectWriterFactory = DI.Current.Resolve <IClientSideObjectWriterFactory>();

            StyleSheetRegistrar styleSheetRegistrar = httpContext.Items[StyleSheetRegistrar.Key] as StyleSheetRegistrar ??
                                                      new StyleSheetRegistrar(new WebAssetCollection(WebAssetDefaultSettings.StyleSheetFilesPath), viewContext, DI.Current.Resolve <IWebAssetCollectionResolver>());
            ScriptRegistrar scriptRegistrar = httpContext.Items[ScriptRegistrar.Key] as ScriptRegistrar ??
                                              new ScriptRegistrar(new WebAssetCollection(WebAssetDefaultSettings.ScriptFilesPath), new List <IScriptableComponent>(), viewContext, DI.Current.Resolve <IWebAssetCollectionResolver>(), scriptWrapper);

            StyleSheetRegistrarBuilder styleSheetRegistrarBuilder = StyleSheetRegistrarBuilder.Create(styleSheetRegistrar);
            ScriptRegistrarBuilder     scriptRegistrarBuilder     = ScriptRegistrarBuilder.Create(scriptRegistrar);

            return(new ViewComponentFactory <TModel>(helper, clientSideObjectWriterFactory, styleSheetRegistrarBuilder, scriptRegistrarBuilder));
        }