RootLifetimeScope
๊ฐ๋
ํ๋ก์ ํธ์ ์ต์์ LifetimeScope ์ ๋๋ค.
๊ฒ์์ ์์๋ถํฐ ์ข ๋ฃ๊น์ง ์์๋ฉ๋๋ค.
ScreenSystem์์๋ ์ผ์ข ์ EntryPoint๋ฅผ ์คํ์ํค๋ ์ญํ ๋ ์ํต๋๋ค.
๊ตฌํ ๋ฐฉ์นจ
ํ์ด์ง ์ปจํ ์ด๋์ ๋ชจ๋ฌ ์ปจํ ์ด๋๋ฅผ SerializeField๋ฅผ ํตํด ์ฐธ์กฐ ๋ฐ์ต๋๋ค.
์ฐธ์กฐ๋ฐ์ ๋ ์ปจํ ์ด๋๋ฅผ ๋ฑ๋กํฉ๋๋ค.
IContainerBuilder
ํ์ ์ extension method๋ก ScreenSystem์์ ์ง์ํ๋RegisterPageSystem
๊ณผRegisterModalSystem
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฒซ๋ฒ์งธ ํ์ด์ง๋ฅผ Push์ํต๋๋ค.
EntryPoint ํด๋์ค๋ฅผ ๋ง๋ง๋๋ค.
IStartable ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉ, ๊ตฌํํฉ๋๋ค.
RootLifetimeScope์์ RegisterEntryPoint๋ก์ ๋ฑ๋กํฉ๋๋ค.
PageEventPublisher๋ฅผ Inject ๋ฐ์์ PageBuilder๋ฅผ ๋ฉ์์ง๋ก ๋ณด๋ด๋ฉด ํ์ด์ง Push ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐํ ๋ฉ์์ง ๋ธ๋ก์ปค, ๋คํธ์ํฌ ๊ด๋ จ ๋ํ๋์ ๋ฑ๋ฑ์ ๋ฑ๋กํฉ๋๋ค.
public class RootLifetimeScope : LifetimeScope
{
[SerializeField] UnityScreenNavigator.Runtime.Core.Page.PageContainer _container;
[SerializeField] UnityScreenNavigator.Runtime.Core.Modal.ModalContainer _modalContainer;
protected override void Configure(IContainerBuilder builder)
{
builder.RegisterPageSystem(_container);
builder.RegisterModalSystem(_modalContainer);
builder.Register<IHttpClient>(_ => new HttpClient(), Lifetime.Singleton);
var options = builder.RegisterMessagePipe();
builder.RegisterMessageBroker<MessagePipeTestMessage>(options);
builder.RegisterEntryPoint<TestEntryPoint>();
}
private class TestEntryPoint : IStartable
{
private readonly PageEventPublisher _publisher;
public TestEntryPoint(PageEventPublisher publisher)
{
_publisher = publisher;
}
public void Start()
{
_publisher.SendPushEvent(new TestPageBuilder());
}
}
}
Last updated