public void ClassWithSource()
        {
            MockBuilderContext            context  = new MockBuilderContext();
            EventBrokerReflectionStrategy strategy = new EventBrokerReflectionStrategy();

            strategy.BuildUp(context, typeof(Source), null);

            IEventBrokerPolicy policy = context.Policies.Get <IEventBrokerPolicy>(typeof(Source));

            Assert.NotNull(policy);
            Assert.Contains(new KeyValuePair <string, EventInfo>("Baz", typeof(Source).GetEvent("EventSource")), policy.Sources);
        }
        public void ClassWithSink()
        {
            MockBuilderContext            context  = new MockBuilderContext();
            EventBrokerReflectionStrategy strategy = new EventBrokerReflectionStrategy();

            strategy.BuildUp(context, typeof(Sink), null);

            IEventBrokerPolicy policy = context.Policies.Get <IEventBrokerPolicy>(typeof(Sink));

            Assert.NotNull(policy);
            Assert.Contains(new KeyValuePair <string, MethodInfo>("Bar", typeof(Sink).GetMethod("EventSinkMethod")), policy.Sinks);
        }
        public override object BuildUp(IBuilderContext context,
                                       object buildKey,
                                       object existing)
        {
            IEventBrokerPolicy policy  = context.Policies.Get <IEventBrokerPolicy>(buildKey);
            EventBrokerService service = context.Locator.Get <EventBrokerService>();

            if (policy != null && service != null)
            {
                foreach (KeyValuePair <string, MethodInfo> kvp in policy.Sinks)
                {
                    service.RegisterSink(existing, kvp.Value, kvp.Key);
                }

                foreach (KeyValuePair <string, EventInfo> kvp in policy.Sources)
                {
                    service.RegisterSource(existing, kvp.Value, kvp.Key);
                }
            }

            return(base.BuildUp(context, buildKey, existing));
        }