private void InstallBindings(DiContainer builder) { var options = builder.BindMessagePipe(); // 使用するためにSetProviderはDIContainerにバインドをしなければならない builder.BindMessageBroker <string>(options); }
private void Configure(DiContainer builder) { var options = builder.BindMessagePipe(); //builder.BindMessageHandlerFilter<MyFilter<int>>(); //GlobalMessagePipe.SetProvider(builder.AsServiceProvider()); }
public static DiContainer BuildZenject(Action <MessagePipeOptions, DiContainer> use) { var builder = new DiContainer(); var options = builder.BindMessagePipe(); use(options, builder); return(builder); }
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); }
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); }
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");*/ }
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 = "テストメッセージ" }); } }
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 = "テストメッセージ" }); }
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"); }
public void Setup() { _container = new DiContainer(); _container.BindMessageBroker <MyEvent>(_container.BindMessagePipe()); }