RootLifetimeScope
ํ๋ก์ ํธ ์ต์๋จ ์ฌ์ ์ต์๋จ ๊ฒ์์ค๋ธ์ ํธ์ ๋ถ์ฌ๋๋ค.
์๋๋ ์์์ฝ๋์ด๋ฉฐ, RootLifetimeScope์๋ ๊ฒ์ ์งํ ๋ด๋ด ์๋ช ์ด ์ ์ง๋์ด์ผ ํ๋ ๊ฒ๋ค์ ๋ฑ๋กํ๋๊ฒ ์ฃผ ๋ชฉ์ ์ด๋ฉฐ, ์ฒซ UI ํ์ด์ง๋ฅผ ์์์ํค๋ EntryPoint ๋ฅผ ๋ฐ๋์ํค๋ ์ญํ ๋ ํจ.
public class ProjectRootLifetimeScope : VContainer.Unity.LifetimeScope
{
[SerializeField] private PageContainer pageContainer;
[SerializeField] private ModalContainer modalContainer;
protected override void Configure(IContainerBuilder builder)
{
// ScreenSystem
builder.RegisterPageSystem(pageContainer);
builder.RegisterModalSystem(modalContainer);
// MessagePipe
var options = builder.RegisterMessagePipe();
builder.RegisterMessageBroker<MessagePipeOptions>(options);
RegisterGateways(builder);
RegisterRepositories(builder);
RegisterUseCases(builder);
builder.RegisterEntryPoint<SampleEntryPoint>();
}
private void RegisterUseCases(IContainerBuilder builder)
{
builder.Register<SignInUseCase>(Lifetime.Scoped).AsImplementedInterfaces();
}
private void RegisterRepositories(IContainerBuilder builder)
{
builder.Register<AccountRepository>(Lifetime.Scoped).AsImplementedInterfaces();
}
private void RegisterGateways(IContainerBuilder builder)
{
builder.Register<HttpClientGateway>(Lifetime.Singleton).AsImplementedInterfaces();
}
// ReSharper disable once ClassNeverInstantiated.Local
private class SampleEntryPoint : IStartable
{
private readonly PageEventPublisher _pageEventPublisher;
public SampleEntryPoint(PageEventPublisher pageEventPublisher)
{
_pageEventPublisher = pageEventPublisher;
}
public void Start()
{
_pageEventPublisher.SendPushEvent(new SignInPageBuilder(false, false));
}
}
}
Last updated