public void RegisterAllEventSubscribersInAssemblies(params Assembly[] assemblies)
 {
     foreach (var assembly in assemblies)
     {
         foreach (var subscriberType in assembly.GetTypes().Where(t => TypeUtils.IsDomainSubscriber(t)))
         {
             RegisterSubscriber(subscriberType);
         }
     }
 }
        public void RegisterSubscriber(Type subscriberType)
        {
            if (!TypeUtils.IsDomainSubscriber(subscriberType))
            {
                throw new EventSourcingException(
                          "给定的类型‘{0}’不是一个合法的聚合根消息订阅者类型,类型必须继承AggregateRoot且必须至少具有一个标记了DomainHandler特性的方法才可以被注册为订阅者。",
                          subscriberType.FullName);
            }

            _messageHandlerMetaDataManager.RegisterMetaDatasFromType(
                subscriberType,
                (handler, attribute) => new DomainHandlerMetaData
            {
                Handler        = handler,
                SubscriberType = subscriberType,
                Paths          = attribute.Paths,
                GetWithLock    = attribute.GetWithLock
            });
        }