private static void ProcessServicesProvider(IServicesProvider provider, YieldServicesProvider yieldServicesProvider, FourPartVersion asmVersion, IRequest request) { try { provider.InitializeProvider(DynamicInterface.Instance, request); FourPartVersion ver = provider.GetProviderVersion(); yieldServicesProvider(provider.GetServicesProviderName(), provider, ver == 0 ? asmVersion : ver, request); } catch (Exception e) { e.Dump(); } }
internal static bool AcquireProviders(string assemblyPath, IRequest request, YieldMetaProvider yieldMetaProvider, YieldPackageProvider yieldPackageProvider, YieldServicesProvider yieldServicesProvider) { try { var assembly = Assembly.LoadFile(assemblyPath); if (assembly == null) { return(false); } var asmVersion = GetAssemblyVersion(assembly); // process Meta Providers foreach (var metaProviderClass in DynamicInterface.Instance.FilterTypesCompatibleTo <IMetaProvider>(assembly)) { AcquireProvidersViaMetaProvider(DynamicInterface.Instance.Create <IMetaProvider>(metaProviderClass), yieldMetaProvider, yieldPackageProvider, yieldServicesProvider, asmVersion, request); } // process Package Providers foreach (var packageProviderClass in DynamicInterface.Instance.FilterTypesCompatibleTo <IPackageProvider>(assembly)) { ProcessPackageProvider(DynamicInterface.Instance.Create <IPackageProvider>(packageProviderClass), yieldPackageProvider, asmVersion, request); } // Process Services Providers foreach (var serviceProviderClass in DynamicInterface.Instance.FilterTypesCompatibleTo <IServicesProvider>(assembly)) { ProcessServicesProvider(DynamicInterface.Instance.Create <IServicesProvider>(serviceProviderClass), yieldServicesProvider, asmVersion, request); } } catch (Exception e) { e.Dump(); } return(true); }
internal static void AcquireProvidersViaMetaProvider(IMetaProvider provider, YieldMetaProvider yieldMetaProvider, YieldPackageProvider yieldPackageProvider, YieldServicesProvider yieldServicesProvider, FourPartVersion asmVersion, IRequest request) { var metaProviderName = provider.GetMetaProviderName(); FourPartVersion metaProviderVersion = provider.GetProviderVersion(); bool reloading = yieldMetaProvider(metaProviderName, provider, (metaProviderVersion == 0 ? asmVersion : metaProviderVersion), request); try { provider.InitializeProvider(DynamicInterface.Instance, request); var metaProvider = provider; Parallel.ForEach(provider.GetProviderNames(), name => { // foreach (var name in provider.GetProviderNames()) { var instance = metaProvider.CreateProvider(name); if (instance != null) { // check if it's a Package Provider if (DynamicInterface.Instance.IsInstanceCompatible <IPackageProvider>(instance)) { try { ProcessPackageProvider(DynamicInterface.Instance.Create <IPackageProvider>(instance), yieldPackageProvider, asmVersion, request); } catch (Exception e) { e.Dump(); } } // check if it's a Services Provider if (DynamicInterface.Instance.IsInstanceCompatible <IServicesProvider>(instance)) { try { ProcessServicesProvider(DynamicInterface.Instance.Create <IServicesProvider>(instance), yieldServicesProvider, asmVersion, request); } catch (Exception e) { e.Dump(); } } } }); } catch (Exception e) { e.Dump(); } }