示例#1
0
        /// <summary>
        /// 设置对象容器并自动注册框架所有默认实现类并自动对给定程序集进行初始化
        /// </summary>
        public Configuration Container(IObjectContainer container, params Assembly[] assemblies)
        {
            ObjectContainer.SetContainer(container);

            //向容器中注册框架所有接口的默认实现
            ObjectContainer.Register <ILoggerFactory, Log4NetLoggerFactory>();
            ObjectContainer.Register <IAggregateRootTypeProvider, DefaultAggregateRootTypeProvider>();
            ObjectContainer.Register <ISnapshotTypeProvider, DefaultSnapshotTypeProvider>();
            ObjectContainer.Register <IAggregateRootFactory, DefaultAggregateRootFactory>();
            ObjectContainer.Register <ISerializer, JsonNetSerializer>(LifeStyle.Transient);
            ObjectContainer.Register <ISnapshotter, DefaultSnapshotter>(LifeStyle.Transient);
            ObjectContainer.Register <ISnapshotPolicy, NoSnapshotPolicy>(LifeStyle.Transient);
            ObjectContainer.Register <IMessageSerializer, DefaultMessageSerializer>(LifeStyle.Transient);
            ObjectContainer.Register <ISubscriptionStore, DefaultSubscriptionStore>();
            ObjectContainer.Register <IMessageTransport, MsmqMessageTransport>(LifeStyle.Transient);
            ObjectContainer.Register <IContextLifetimeManager, DynamicContextLifetimeManager>();
            ObjectContainer.Register <IContextManager, DefaultContextManager>(LifeStyle.Transient);
            ObjectContainer.Register <ISyncEventHandlerProvider, DefaultSyncEventHandlerProvider>();
            ObjectContainer.Register <IAsyncEventHandlerProvider, DefaultAsyncEventHandlerProvider>();
            ObjectContainer.Register <IAggregateEventHandlerProvider, DefaultAggregateEventHandlerProvider>();
            ObjectContainer.Register <ISourcableEventTypeProvider, DefaultSourcableEventTypeProvider>();
            ObjectContainer.Register <IAggregateRootInternalHandlerProvider, DefaultAggregateRootInternalHandlerProvider>();
            ObjectContainer.Register <IEventTypeProvider, DefaultEventTypeProvider>();
            ObjectContainer.Register <ITypeNameMappingProvider, DefaultTypeNameMappingProvider>();
            ObjectContainer.Register <IEventStore, DefaultEventStore>(LifeStyle.Transient);
            ObjectContainer.Register <ISnapshotStore, DefaultSnapshotStore>(LifeStyle.Transient);
            ObjectContainer.Register <ISyncEventPublisher, DefaultSyncEventPublisher>();
            ObjectContainer.Register <IAsyncEventPublisher, DefaultAsyncEventPublisher>();
            ObjectContainer.Register <IAsyncEventSubscriberEndpoint, DefaultAsyncEventSubscriberEndpoint>();
            ObjectContainer.Register <IDbConnectionFactory, SqlConnectionFactory>(LifeStyle.Transient);
            ObjectContainer.Register <IAggregateRootVersionTableProvider, DefaultAggregateRootVersionTableProvider>();
            ObjectContainer.Register <ISourcableEventTableProvider, DefaultSourcableEventTableProvider>();
            ObjectContainer.Register <IContextTransactionLifetimeManager, DynamicContextTransactionLifetimeManager>();
            ObjectContainer.Register <IContextTransactionManager, SqlContextTransactionManager>(LifeStyle.Transient);
            ObjectContainer.Register <ICurrentDbTransactionProvider, SqlContextTransactionManager>(LifeStyle.Transient);

            //对给定程序集进行初始化
            this
            .RegisterServices(assemblies)
            .RegisterComponents(assemblies)
            .RegisterRepositories(assemblies)
            .RegisterAggregateRootTypes(assemblies)
            .RegisterSourcableEvents(assemblies)
            .RegisterSourcableEventMappings(assemblies)
            .RegisterEventSubscribers(assemblies)
            .RegisterTypeNameMappings(assemblies)
            .RegisterAggregateRootInternalEventHandlers(assemblies)
            .RegisterSyncEventHandlers(assemblies)
            .RegisterAsyncEventHandlers(assemblies)
            .RegisterAggregateEventHandlers(assemblies);

            return(this);
        }