public T GetFunctionProvider <T>() where T : class, IFunctionProvider { var functionFolderEntityToken = (this.EntityToken as BaseFunctionFolderElementEntityToken); if (functionFolderEntityToken != null) { var elementProvider = ElementProviderPluginFacade.GetElementProvider(functionFolderEntityToken.ElementProviderName) as BaseFunctionElementProvider; if (elementProvider != null) { var provider = FunctionProviderPluginFacade.GetFunctionProvider(elementProvider.FunctionProviderName); if (provider is T) { return(provider as T); } } } var functionProviderSettings = ConfigurationServices.ConfigurationSource.GetSection(FunctionProviderSettings.SectionName) as FunctionProviderSettings; var providerNames = functionProviderSettings.FunctionProviderPlugins.Select(plugin => plugin.Name); foreach (string providerName in providerNames) { var provider = FunctionProviderPluginFacade.GetFunctionProvider(providerName); if (provider is T) { return(provider as T); } } throw new InvalidOperationException("Failed to get instance of " + typeof(T).Name); }
protected override IEnumerable <IMetaFunction> OnGetFunctionsFromProvider(string providerName, FunctionTypesToReturn functionTypesToReturn) { switch (functionTypesToReturn) { case FunctionTypesToReturn.StaticDependentFunctions: return(FunctionProviderPluginFacade.Functions(providerName)); case FunctionTypesToReturn.DynamicDependentOnlyFunctions: return(FunctionProviderPluginFacade.DynamicTypeDependentFunctions(providerName)); case FunctionTypesToReturn.AllFunctions: IEnumerable <IMetaFunction> functions = FunctionProviderPluginFacade.Functions(providerName); return(functions.Concat(FunctionProviderPluginFacade.DynamicTypeDependentFunctions(providerName))); } throw new NotImplementedException(string.Format("Unexpected FunctionTypesToReturn enumeration value '{0}' from provider '{1}'", functionTypesToReturn, providerName)); }
internal void GetProviderAndFunction <FunctionType>( FileBasedFunctionEntityToken entityToken, out FileBasedFunctionProvider <FunctionType> provider, out FileBasedFunction <FunctionType> function) where FunctionType : FileBasedFunction <FunctionType> { string functionProviderName = entityToken.FunctionProviderName; provider = (FileBasedFunctionProvider <FunctionType>)FunctionProviderPluginFacade.GetFunctionProvider(functionProviderName); IFunction func = FunctionFacade.GetFunction(entityToken.FunctionName); Verify.IsNotNull(func, "Failed to get function '{0}'", entityToken.FunctionName); if (func is FunctionWrapper) { func = (func as FunctionWrapper).InnerFunction; } function = (FileBasedFunction <FunctionType>)func; }