Может ли кто-нибудь помочь мне понять, что такое Unity и как он упрощает кодирование в примере ниже:
Обычный код
FileLogger myLogger = new FileLogger();
FileLogger myLogger = new FastLogger();
Код контейнера Unity
// Create container and register types
IUnityContainer myContainer = new UnityContainer();
myContainer.RegisterType<ILogger, FileLogger>(); // default instance
myContainer.RegisterType<ILogger, FastFileLogger>("FastLogger");
ILogger myLogger = myContainer.Resolve<ILogger>();
Также:
- Что такое контейнер в Unity?
- Что такое Resolve?
- Что такое RegisterType.
- Что подразумевается под отображением типов?
- Что такое МОК
Также, что произойдет, если два класса реализуют один и тот же интерфейс, и мы сделаем что-то подобное в Unity:
container.RegisterType<IInvoicingService, InvoicingService>()
.RegisterType<IInvoicingService, ManagerService>();
IInvoicingService service = container.Resolve<IInvoicingService>();
service.GetCount();
Похоже, он вызовет метод getCount
на ManagerService
. Что мне делать, чтобы вызвать GetCount
на InvoicingService
и ManagerService
?
Да, я читал документацию по CodePlex, это меня сильно сбило с толку!