Exemple #1
0
        private void InstallBindings(DiContainer builder)
        {
            var options = builder.BindMessagePipe();

            // 使用するためにSetProviderはDIContainerにバインドをしなければならない
            builder.BindMessageBroker <string>(options);
        }
Exemple #2
0
        public void GrobalScope()
        {
            _container1 = new DiContainer();
            _container2 = new DiContainer();

            // Grobalに設定する前に必要
            var option = _container1.BindMessagePipe();

            _container1.BindMessageBroker <string>(option);
            _container2.BindMessageBroker <string>(_container2.BindMessagePipe());

            // GlobalMessagePipeを使用する前にSetProviderに設定する必要がある
            GlobalMessagePipe.SetProvider(_container1.AsServiceProvider());

            var p = GlobalMessagePipe.GetPublisher <string>();
            var s = GlobalMessagePipe.GetSubscriber <string>();

            var d = s.Subscribe(x => Debug.Log(x));

            var service2 = _container2.Instantiate <Subscriber>();

            service2.Setup("Container2");

            p.Publish("10");
            p.Publish("20");

            // Disposeしたら購読ができなくなる
            d.Dispose();

            p.Publish("30");

            /*
             * _container1.BindMessageBroker<string>(_container1.BindMessagePipe());
             * _container2.BindMessageBroker<string>(_container2.BindMessagePipe());
             *
             * // イベントを受ける方
             * var service1 = _container1.Instantiate<Subscriber>();
             * service1.Setup("Container1");
             *
             * var service2 = _container2.Instantiate<Subscriber>();
             * service2.Setup("Container2");
             *
             * // イベントを投げる方
             * var publisher1 = _container1.Instantiate<Publisher>();
             * publisher1.Send("Test");*/
        }
Exemple #3
0
        public void イベントを破棄する()
        {
            _container = new DiContainer();

            var option = _container.BindMessagePipe();

            _container.BindMessageBroker <MyEvent>(option);

            // イベントを受ける方
            using (_container.Instantiate <Subscriber>())
            {
                // イベントを投げる方
                var publisher = _container.Instantiate <Publisher>();
                publisher.Send(new MyEvent {
                    Message = "テストメッセージ"
                });
            }
        }
Exemple #4
0
        public void SimpleTest()
        {
            _container = new DiContainer();

            _container.BindMessageBroker <MyEvent>(_container.BindMessagePipe());

            // イベントを受ける方
            var sub = _container.Instantiate <Subscriber>();

            sub.Setup();

            // イベントを投げる方
            var publisher = _container.Instantiate <Publisher>();

            publisher.Send(new MyEvent {
                Message = "テストメッセージ"
            });
        }
Exemple #5
0
        public void LocalScope()
        {
            _container1 = new DiContainer();
            _container2 = new DiContainer();

            _container1.BindMessageBroker <string>(_container1.BindMessagePipe());
            _container2.BindMessageBroker <string>(_container2.BindMessagePipe());

            // イベントを受ける方
            var service1 = _container1.Instantiate <Subscriber>();

            service1.Setup("Container1");

            var service2 = _container2.Instantiate <Subscriber>();

            service2.Setup("Container2");

            // イベントを投げる方
            var publisher1 = _container1.Instantiate <Publisher>();

            publisher1.Send("Test");
        }
Exemple #6
0
 public void Setup()
 {
     _container = new DiContainer();
     _container.BindMessageBroker <MyEvent>(_container.BindMessagePipe());
 }