/// <summary> /// Configura o catalogo que será usado no sistema. /// </summary> protected override void ConfigureAggregateCatalog() { base.ConfigureAggregateCatalog(); this.AggregateCatalog.Catalogs.Add(new MefContrib.Hosting.Conventions.ConventionCatalog( new Colosoft.Mef.PartConventionBuilder() .Add <Colosoft.Business.EntityEventManager, Colosoft.Business.IEntityEventManager>() .Add <Colosoft.Logging.DebugLogger, Colosoft.Logging.ILogger>() .Add <Colosoft.Web.Security.UserContextConfigurator, Colosoft.Security.IUserContextConfigurator>() .AddImportingConstructor <Colosoft.Business.BusinessValidationManager, Colosoft.Validation.IValidationManager>() .Add <Colosoft.Business.BusinessEntityTypeLoader, Colosoft.Business.IBusinessEntityTypeLoader>() .AddImportingConstructor <Colosoft.Business.BusinessEntityTypeManager, Colosoft.Business.IEntityTypeManager>() .AddImportingConstructor <Colosoft.Business.EntityManager, Colosoft.Business.IEntityManager>() .Add <Colosoft.Data.Database.Generic.PersistenceTransactionExecuter, Colosoft.Data.IPersistenceTransactionExecuter>(true) .AddImportingConstructor <Colosoft.Query.Database.Generic.ProviderLocator, Colosoft.Query.IProviderLocator>() .AddImportingConstructor <Colosoft.Query.Database.SqlSourceContext, Colosoft.Query.ISourceContext>() .Add <Colosoft.Data.Caching.Local.DataEntriesRepository, Colosoft.Data.Caching.IDataEntriesRepository>() .AddImportingConstructor <Colosoft.Data.Schema.RecordKeyFactory, Colosoft.Query.IRecordKeyFactory>() .Add <Colosoft.Security.Captcha.CaptchaImpl, Colosoft.Security.CaptchaSupport.ICaptcha>() .AddImportingConstructor <Integracao.ProvedorIntegradores, Integracao.IProvedorIntegradores>())); this.AggregateCatalog.Catalogs.Add(new Colosoft.Mef.InstanceCatalog() .Add <Colosoft.Data.Caching.IDataCacheManager>(new Lazy <Colosoft.Data.Caching.IDataCacheManager>(() => { var manager = new Colosoft.Data.Caching.DataCacheManager( this.Container.GetExportedValue <Colosoft.Query.ISourceContext>(), this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(), new DataEntryDownloader(), this.Container.GetExportedValue <Colosoft.Data.Caching.IDataEntriesRepository>(), this.Container.GetExportedValue <Colosoft.Data.Caching.ICacheLoaderObserver>(), this.Container.GetExportedValue <Colosoft.Logging.ILogger>()); return(manager); })) .Add <Integracao.GerenciadorIntegradores>(new Lazy <Integracao.GerenciadorIntegradores>(this.CarregarGerenciadorIntegradores)) .Add <Colosoft.Data.IPersistenceContext>(new Lazy <Colosoft.Data.IPersistenceContext>(() => { var typeSchema = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(); return(this.CreateDatabasePersistenceContext(typeSchema)); })) .Add <Colosoft.Caching.CacheDataSource>(new Lazy <Colosoft.Caching.CacheDataSource>(() => { var cacheManager = this.Container.GetExportedValue <Colosoft.Data.Caching.IDataCacheManager>(); var typeSchema = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(); return(new Colosoft.Caching.CacheDataSource(cacheManager, typeSchema)); }))); }
/// <summary> /// Configura o catalogo que será usado no sistema. /// </summary> protected override void ConfigureAggregateCatalog() { base.ConfigureAggregateCatalog(); this.AggregateCatalog.Catalogs.Add(new MefContrib.Hosting.Conventions.ConventionCatalog( new Colosoft.Mef.PartConventionBuilder() .Add <Colosoft.Business.EntityEventManager, Colosoft.Business.IEntityEventManager>() .Add <Colosoft.Logging.DebugLogger, Colosoft.Logging.ILogger>() .Add <Colosoft.Web.Security.UserContextConfigurator, Colosoft.Security.IUserContextConfigurator>() .AddImportingConstructor <Colosoft.Business.BusinessValidationManager, Colosoft.Validation.IValidationManager>() .Add <Colosoft.Business.BusinessEntityTypeLoader, Colosoft.Business.IBusinessEntityTypeLoader>() .AddImportingConstructor <Colosoft.Business.BusinessEntityTypeManager, Colosoft.Business.IEntityTypeManager>() .AddImportingConstructor <Colosoft.Business.EntityManager, Colosoft.Business.IEntityManager>() .Add <Colosoft.Data.Database.Generic.PersistenceTransactionExecuter, Colosoft.Data.IPersistenceTransactionExecuter>(true) .AddImportingConstructor <Colosoft.Query.Database.Generic.ProviderLocator, Colosoft.Query.IProviderLocator>() .AddImportingConstructor <Colosoft.Query.Database.SqlSourceContext, Colosoft.Query.ISourceContext>() .Add <Colosoft.Data.Caching.Local.DataEntriesRepository, Colosoft.Data.Caching.IDataEntriesRepository>() .AddImportingConstructor <Colosoft.Data.Schema.RecordKeyFactory, Colosoft.Query.IRecordKeyFactory>() .Add <Colosoft.Security.Captcha.CaptchaImpl, Colosoft.Security.CaptchaSupport.ICaptcha>() .AddImportingConstructor <Integracao.ProvedorIntegradores, Integracao.IProvedorIntegradores>())); this.AggregateCatalog.Catalogs.Add(new Colosoft.Mef.InstanceCatalog() .Add <Colosoft.Data.Caching.IDataCacheManager>(new Lazy <Colosoft.Data.Caching.IDataCacheManager>(() => { var manager = new Colosoft.Data.Caching.DataCacheManager( this.Container.GetExportedValue <Colosoft.Query.ISourceContext>(), this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(), new DataEntryDownloader(), this.Container.GetExportedValue <Colosoft.Data.Caching.IDataEntriesRepository>(), this.Container.GetExportedValue <Colosoft.Data.Caching.ICacheLoaderObserver>(), this.Container.GetExportedValue <Colosoft.Logging.ILogger>()); return(manager); })) .Add <Integracao.GerenciadorIntegradores>(new Lazy <Integracao.GerenciadorIntegradores>(this.CarregarGerenciadorIntegradores)) .Add <Colosoft.Data.IPersistenceContext>(new Lazy <Colosoft.Data.IPersistenceContext>(() => { var typeSchema = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(); return(this.CreateDatabasePersistenceContext(typeSchema)); })) .Add <Colosoft.Caching.CacheDataSource>(new Lazy <Colosoft.Caching.CacheDataSource>(() => { var cacheManager = this.Container.GetExportedValue <Colosoft.Data.Caching.IDataCacheManager>(); var typeSchema = this.Container.GetExportedValue <Colosoft.Data.Schema.ITypeSchema>(); return(new Colosoft.Caching.CacheDataSource(cacheManager, typeSchema)); }))); using (var textReader = new System.IO.StreamReader(HttpContext.Current.Server.MapPath("~/Mef.config"))) { var reader = System.Xml.XmlReader.Create(textReader, new System.Xml.XmlReaderSettings { IgnoreWhitespace = true, }); reader.Read(); var configurableCatalog = new MefContrib.Models.Provider.DefinitionProviderPartCatalog <MefContrib.Models.Provider.Definitions.Configurable.ConfigurableDefinitionProvider>(reader); this.AggregateCatalog.Catalogs.Add(configurableCatalog); } // Recupera o diretório onde o site está em execução var directory = HttpContext.Current.Server.MapPath("~/bin"); // Localiza os assemblies foreach (var i in System.IO.Directory.GetFiles(directory) .Where(f => f.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase))) { var assembly = System.Reflection.Assembly.Load(System.IO.Path.GetFileNameWithoutExtension(i)); if (assembly != null) { this.AggregateCatalog.Catalogs.Add(new System.ComponentModel.Composition.Hosting.AssemblyCatalog(assembly)); } } this.AggregateCatalog.Catalogs.Add(new MefContrib.Hosting.Conventions.ConventionCatalog( new Colosoft.Mef.PartConventionBuilder() .AddImportingConstructor <Colosoft.Query.Database.MySql.MySqlDataSource, Colosoft.Query.Database.SqlQueryDataSource>() .AddImportingConstructor <Colosoft.Query.Database.MySql.MySqlDataSource, Colosoft.Query.IQueryDataSource>() .Add <Colosoft.Data.Database.MySql.MySqlPrimaryKeyRepository, Colosoft.Data.Database.MySql.IMySqlPrimaryKeyRepository>())); this.AggregateCatalog.Catalogs.Add(new Colosoft.Mef.InstanceCatalog() .Add <Colosoft.Data.Schema.ITypeSchema>(new Lazy <Colosoft.Data.Schema.ITypeSchema>(() => { // Carrega o esquema dos metadados do GDA return(Colosoft.Data.Schema.GDA.Metadata.MetadataTypeSchema.Load(typeof(Glass.Data.Model.Pedido).Assembly)); }))); }