Может кто-нибудь помочь мне понять, что такое 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?
- Что такое разрешение?
- Что такое RegisterType.
- Что подразумевается под Type Mapping?
- Что такое IOC
И что происходит, если два класса реализуют один и тот же интерфейс, и мы делаем что-то подобное ниже для Unity:
container.RegisterType<IInvoicingService, InvoicingService>()
.RegisterType<IInvoicingService, ManagerService>();
IInvoicingService service = container.Resolve<IInvoicingService>();
service.GetCount();
Похоже, он вызовет метод getCount
для ManagerService
.Что я должен сделать, чтобы вызвать GetCount
на InvoicingService
и ManagerService
?
Да, я прочитал документацию по CodePlex, это меня очень смутило!