public override void PreBuildUp(IBuilderContext context)
        {
            if (context.Policies.Get <IEventBrokerInfoPolicy>(context.BuildKey) == null)
            {
                var policy = new EventBrokerInfoPolicy();
                context.Policies.Set <IEventBrokerInfoPolicy>(policy, context.BuildKey);

                AddPublicationsToPolicy(context.BuildKey, policy);
                AddSubscriptionsToPolicy(context.BuildKey, policy);
            }
        }
        private static void AddSubscriptionsToPolicy(object buildKey, EventBrokerInfoPolicy policy)
        {
            var t = BuildKey.GetType(buildKey);

            foreach (var method in t.GetMethods())
            {
                var attrs = (SubscribesToAttribute[])method.GetCustomAttributes(typeof(SubscribesToAttribute), true);
                foreach (var attr in attrs)
                {
                    policy.AddSubscription(attr.EventName, method);
                }
            }
        }
        private static void AddPublicationsToPolicy(object buildKey, EventBrokerInfoPolicy policy)
        {
            var t = BuildKey.GetType(buildKey);

            foreach (var eventInfo in t.GetEvents())
            {
                var attrs = (PublishesAttribute[])eventInfo.GetCustomAttributes(typeof(PublishesAttribute), true);
                foreach (var attr in attrs)
                {
                    policy.AddPublication(attr.EventName, eventInfo);
                }
            }
        }