private IMailingProvider CreateProviderInstance(Type providerType, IMailingProviderConfigFactory configFactory) { IMailingProvider mailingProvider = null; var configurableConstructor = providerType.GetConstructor(new Type[] { typeof(UserConnection), typeof(IMailingProviderConfigFactory) }); if (configurableConstructor != null) { mailingProvider = Activator.CreateInstance(providerType, UserConnection, configFactory) as IMailingProvider; } else { var simpleConstructor = providerType.GetConstructor(new Type[] { typeof(UserConnection) }); if (simpleConstructor != null) { mailingProvider = Activator.CreateInstance(providerType, UserConnection) as IMailingProvider; } else { mailingProvider = Activator.CreateInstance(providerType) as IMailingProvider; mailingProvider.UserConnection = UserConnection; } } return(mailingProvider); }
private void InitProvider() { Guid _providerId = MailingUtilities.GetActiveProviderId(UserConnection); SysMailingProvider provider = GetProvider(_providerId); if (provider == null) { string msg = string.Format("Could not load provider data from DB. Provider UId: {0}", _providerId); throw new Exception(msg); } Type providerType = Type.GetType(provider.ClassName); if (providerType != null) { IMailingProviderConfigFactory configFactory = CreateConfigFactory(provider.ConfigFactoryClassName); _mailingProvider = CreateProviderInstance(providerType, configFactory); var configurableProvider = _mailingProvider as IConfigurableMailingProvider; if (configurableProvider != null) { configurableProvider.Configure(); } } else { string msg = string.Format("Could not initiate provider instance. Provider UId: {0}", _providerId); throw new Exception(msg); } }