/// <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); }