Ejemplo n.º 1
0
        private void InstallBindings(DiContainer builder)
        {
            var options = builder.BindMessagePipe();

            // 使用するためにSetProviderはDIContainerにバインドをしなければならない
            builder.BindMessageBroker <string>(options);
        }
Ejemplo n.º 2
0
        private void Configure(DiContainer builder)
        {
            var options = builder.BindMessagePipe();

            //builder.BindMessageHandlerFilter<MyFilter<int>>();

            //GlobalMessagePipe.SetProvider(builder.AsServiceProvider());
        }
Ejemplo n.º 3
0
    public static DiContainer BuildZenject(Action <MessagePipeOptions, DiContainer> use)
    {
        var builder = new DiContainer();
        var options = builder.BindMessagePipe();

        use(options, builder);

        return(builder);
    }
Ejemplo n.º 4
0
    public void InstanceLifetimeTransientToTransientInBindMessagePipe()
    {
        var builder = new DiContainer();
        var option  = builder.BindMessagePipe(configure =>
        {
            configure.InstanceLifetime       = InstanceLifetime.Transient;
            configure.RequestHandlerLifetime = InstanceLifetime.Transient;
        });

        Assert.AreEqual(InstanceLifetime.Transient, option.InstanceLifetime);
        Assert.AreEqual(InstanceLifetime.Transient, option.RequestHandlerLifetime);
    }
Ejemplo n.º 5
0
    public void InstanceLifetimeScopedToScopedInBindMessagePipe()
    {
        var builder = new DiContainer();
        var option  = builder.BindMessagePipe(configure =>
        {
            configure.InstanceLifetime       = InstanceLifetime.Scoped;
            configure.RequestHandlerLifetime = InstanceLifetime.Scoped;
        });

        Assert.AreEqual(InstanceLifetime.Scoped, option.InstanceLifetime);
        Assert.AreEqual(InstanceLifetime.Scoped, option.RequestHandlerLifetime);
    }
Ejemplo n.º 6
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");*/
        }
Ejemplo n.º 7
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 = "テストメッセージ"
                });
            }
        }
Ejemplo n.º 8
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 = "テストメッセージ"
            });
        }
Ejemplo n.º 9
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");
        }
Ejemplo n.º 10
0
 public void Setup()
 {
     _container = new DiContainer();
     _container.BindMessageBroker <MyEvent>(_container.BindMessagePipe());
 }