using System; namespace ZeroLevel.Patterns.DependencyInjection { /// /// Интерфейс с методами разрешений зависимостей /// public interface IResolver { #region Activator /// /// Создание экземпляра объекта указанного типа /// /// Тип объекта /// Имя разрешения зависимости /// Экземпляр объекта T CreateInstance(string resolveName = ""); /// /// Создание экземпляра объекта указанного типа /// /// Тип объекта /// Аргументы конструктора /// Имя разрешения зависимости /// Экземпляр объекта T CreateInstance(object[] args, string resolveName = ""); /// /// Создание экземпляра объекта указанного типа /// /// Тип объекта /// Имя разрешения зависимости /// Экземпляр объекта object CreateInstance(Type type, string resolveName = ""); /// /// Создание экземпляра объекта указанного типа /// /// Тип объекта /// Аргументы конструктора /// Имя разрешения зависимости /// Экземпляр объекта object CreateInstance(Type type, object[] args, string resolveName = ""); #endregion #region Resolving /// /// Разрешение зависимости /// /// Тип контракта /// Указание провести композицию при построении объектов /// Инстанс T Resolve(bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Имя разрешения зависимости /// Указание провести композицию при построении объектов /// Инстанс T Resolve(string resolveName, bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Аргументы конструктора /// Указание провести композицию при построении объектов /// Инстанс T Resolve(object[] args, bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Имя разрешения зависимости /// Аргументы конструктора /// Указание провести композицию при построении объектов /// Инстанс T Resolve(string resolveName, object[] args, bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Указание провести композицию при построении объектов /// Инстанс object Resolve(Type type, bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Имя разрешения зависимости /// Указание провести композицию при построении объектов /// Инстанс object Resolve(Type type, string resolveName, bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Аргументы конструктора /// Указание провести композицию при построении объектов /// Инстанс object Resolve(Type type, object[] args, bool compose = true); /// /// Разрешение зависимости /// /// Тип контракта /// Имя разрешения зависимости /// Аргументы конструктора /// Указание провести композицию при построении объектов /// Инстанс object Resolve(Type type, string resolveName, object[] args, bool compose = true); #endregion #region Safe resolving object TryResolve(Type type, out object result, bool compose = true); object TryResolve(Type type, object[] args, out object result, bool compose = true); object TryResolve(Type type, string resolveName, out object result, bool compose = true); bool TryResolve(out T result, bool compose = true); bool TryResolve(object[] args, out T result, bool compose = true); bool TryResolve(string resolveName, out T result, bool compose = true); bool TryResolve(string resolveName, object[] args, out T result, bool compose = true); bool TryResolve(Type type, string resolveName, object[] args, out object result, bool compose = true); #endregion } }