protected override void InitializeParameters()
        {
            WebPageBase razorPage = null;

            try
            {
                using (BuildManagerHelper.DisableUrlMetadataCachingScope())
                {
                    razorPage = WebPage.CreateInstanceFromVirtualPath(VirtualPath);
                }

                var razorFunction = razorPage as RazorFunction;
                if (razorFunction == null)
                {
                    throw new InvalidOperationException($"Failed to initialize function from cache. Path: '{VirtualPath}'");
                }

                Parameters = FunctionBasedFunctionProviderHelper.GetParameters(razorFunction, typeof(RazorFunction), VirtualPath);
                PreventFunctionOutputCaching = razorFunction.PreventFunctionOutputCaching;
            }
            finally
            {
                (razorPage as IDisposable)?.Dispose();
            }
        }
        protected override IFunction InstantiateFunction(string virtualPath, string @namespace, string name)
        {
            WebPageBase razorPage;

            using (BuildManagerHelper.DisableUrlMetadataCachingScope())
            {
                razorPage = WebPage.CreateInstanceFromVirtualPath(virtualPath);
            }

            if (!(razorPage is RazorFunction razorFunction))
            {
                Log.LogWarning(nameof(RazorFunctionProvider),
                               $"Razor page '{virtualPath}' does not inherit from the base class for razor functions '{typeof(RazorFunction).FullName}' and will be ignored");
                return(null);
            }

            try
            {
                var functionParameters = FunctionBasedFunctionProviderHelper.GetParameters(
                    razorFunction, typeof(RazorFunction), virtualPath);

                return(new RazorBasedFunction(@namespace, name, razorFunction.FunctionDescription, functionParameters,
                                              razorFunction.FunctionReturnType, virtualPath, this));
            }
            finally
            {
                razorFunction.Dispose();
            }
        }
        protected override void InitializeParameters()
        {
            UserControl userControl = UserControlFunctionProvider.CompileFile(VirtualPath);

            Verify.IsNotNull(userControl, "Failed to get UserControl from '{0}'", VirtualPath);

            Type baseControlType = userControl is UserControlFunction ? typeof(UserControlFunction) : typeof(UserControl);

            Parameters = FunctionBasedFunctionProviderHelper.GetParameters(userControl, baseControlType, PathUtil.Resolve(VirtualPath));
        }
Example #4
0
        protected override void InitializeParameters()
        {
            WebPageBase razorPage;

            using (BuildManagerHelper.DisableUrlMetadataCachingScope())
            {
                razorPage = WebPage.CreateInstanceFromVirtualPath(VirtualPath);
            }

            if (!(razorPage is RazorFunction))
            {
                throw new InvalidOperationException("Failed to initialize function from cache. Path: '{0}'".FormatWith(VirtualPath));
            }

            Parameters = FunctionBasedFunctionProviderHelper.GetParameters(razorPage as RazorFunction, typeof(RazorFunction), VirtualPath);
        }
        protected override IFunction InstantiateFunction(string virtualPath, string @namespace, string name)
        {
            UserControl userControl = CompileFile(virtualPath);

            if (!(userControl is UserControl))
            {
                return(null);
            }

            Type baseControlType = userControl is UserControlFunction ? typeof(UserControlFunction) : typeof(UserControl);

            string description = userControl is UserControlFunction
                ? (userControl as UserControlFunction).FunctionDescription
                : "";

            var parameters = FunctionBasedFunctionProviderHelper.GetParameters(userControl, baseControlType, virtualPath);

            return(new UserControlBasedFunction(@namespace, name, description, parameters, typeof(UserControl), virtualPath, this));
        }