using System; namespace ZeroLevel.Patterns.DependencyInjection { /// /// Интерфейс с методами для реализации паттерна пул объектов в контейнере /// public interface IPoolContainer { #region Register poolable dependencies /// /// Регистрация пула /// /// Тип контракта /// Начальное количество объектов в пуле /// Максимальное количество объектов в пуле (при -1 пул не ограничен) void RegisterPool(int initialCount, int capacity); /// /// Регистрация разрешения зависимости /// /// Тип контракта /// Тип разрешения void RegisterPoolable(); /// /// Регистрация разрешения зависимости /// /// Тип контракта /// Тип разрешения /// Имя разрешения зависимости void RegisterPoolable(string resolveName); /// /// Регистрация разрешения зависимости /// /// Тип контракта /// Тип разрешения void RegisterPoolable(Type contractType, Type implementationType); /// /// Регистрация разрешения зависимости /// /// Тип контракта /// Тип разрешения /// Имя разрешения зависимости void RegisterPoolable(Type contractType, Type implementationType, string resolveName); /// /// Регистрация разрешения зависимости /// /// Тип контракта /// Экземпляр void RegisterPoolable(TContract implementation); /// /// Регистрация разрешения зависимости /// /// Тип контракта /// Экземпляр void RegisterPoolable(Type contractType, object implementation); #endregion #region Register poolable parametrizied dependencies /// /// Регистрация разрешения зависимости с указанием параметров конструктора /// /// Тип контракта /// Тип разрешения /// Аргументы конструктора void RegisterPoolableParametrizied(object[] constructorParameters); /// /// Регистрация разрешения зависимости с указанием параметров конструктора /// /// Тип контракта /// Тип разрешения /// Имя разрешения зависимости /// Аргументы конструктора void RegisterPoolableParametrizied(string resolveName, object[] constructorParameters); /// /// Регистрация разрешения зависимости с указанием параметров конструктора /// /// Тип контракта /// Тип разрешения /// Аргументы конструктора void RegisterPoolableParametrizied(Type contractType, Type implementationType, object[] constructorParameters); /// /// Регистрация разрешения зависимости с указанием параметров конструктора /// /// Тип контракта /// Тип разрешения /// Имя разрешения зависимости /// Аргументы конструктора void RegisterPoolableParametrizied(Type contractType, Type implementationType, string resolveName, object[] constructorParameters); #endregion } }