public Type FindSingle(IContractToImplementorsMap types, Type type) { var typesFound = types.GetImplementorsFor(type); ThrowIfMultipleTypesFound(type, typesFound); return(typesFound.SingleOrDefault()); }
/// <summary> /// Initializes a new instance of <see cref="TypeFinder"/> /// </summary> /// <param name="assemblies"><see cref="IAssemblies"/> for getting assemblies</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> public TypeFinder(IAssemblies assemblies, IContractToImplementorsMap contractToImplementorsMap) { _assemblies = assemblies; _contractToImplementorsMap = contractToImplementorsMap; CollectTypes(); }
public Type FindTypeByFullName(IContractToImplementorsMap types, string fullName) { var typeFound = types.All.Where(t => t.FullName == fullName).SingleOrDefault(); ThrowIfTypeNotFound(fullName, typeFound); return(typeFound); }
/// <summary> /// Initializes a new instance of <see cref="TypeDiscoverer">TypeDiscoverer</see> /// </summary> /// <param name="assemblies"><see cref="IAssemblies"/> for getting assemblies</param> /// <param name="typeFinder"><see cref="ITypeFinder"/> for finding types from all collected types</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> public TypeDiscoverer(IAssemblies assemblies, ITypeFinder typeFinder, IContractToImplementorsMap contractToImplementorsMap) { _assemblies = assemblies; _typeFinder = typeFinder; _contractToImplementorsMap = contractToImplementorsMap; CollectTypes(); }
/// <summary> /// Configure with a specific <see cref="IContainer"/>. /// </summary> /// <param name="container"><see cref="IContainer"/> to configure with.</param> /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use.</param> /// <param name="assemblyProvider"><see cref="IAssemblyProvider"/> to use for providing assemblies.</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of /// the relationship between contracts and implementors.</param> /// <returns>Configuration object to continue configuration on.</returns> public static Configure With( IContainer container, AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplementorsMap) { return(With( container, new DefaultConventions(container), new DefaultBindings(assembliesConfiguration, assemblyProvider, contractToImplementorsMap), assembliesConfiguration)); }
/// <summary> /// Initializes a new instance of <see cref="AssemblyProvider"/> /// </summary> /// <param name="assemblyProviders"><see cref="IEnumerable{ICanProvideAssemblies}">Providers</see> to provide assemblies</param> /// <param name="assemblyFilters"><see cref="IAssemblyFilters"/> to use for filtering assemblies through</param> /// <param name="assemblyUtility">An <see cref="IAssemblyUtility"/></param> /// <param name="assemblySpecifiers"><see cref="IAssemblySpecifiers"/> used for specifying what assemblies to include or not</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> public AssemblyProvider( IEnumerable<ICanProvideAssemblies> assemblyProviders, IAssemblyFilters assemblyFilters, IAssemblyUtility assemblyUtility, IAssemblySpecifiers assemblySpecifiers, IContractToImplementorsMap contractToImplementorsMap) { _assemblyProviders = assemblyProviders; _assemblyFilters = assemblyFilters; _assemblyUtility = assemblyUtility; _assemblySpecifiers = assemblySpecifiers; _contractToImplementorsMap = contractToImplementorsMap; HookUpAssemblyAddedForProviders(); Populate(); }
/// <summary> /// Initializes a new instance of <see cref="AssemblyProvider"/> /// </summary> /// <param name="assemblyProviders"><see cref="IEnumerable{ICanProvideAssemblies}">Providers</see> to provide assemblies</param> /// <param name="assemblyFilters"><see cref="IAssemblyFilters"/> to use for filtering assemblies through</param> /// <param name="assemblyUtility">An <see cref="IAssemblyUtility"/></param> /// <param name="assemblySpecifiers"><see cref="IAssemblySpecifiers"/> used for specifying what assemblies to include or not</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> public AssemblyProvider( IEnumerable <ICanProvideAssemblies> assemblyProviders, IAssemblyFilters assemblyFilters, IAssemblyUtility assemblyUtility, IAssemblySpecifiers assemblySpecifiers, IContractToImplementorsMap contractToImplementorsMap) { _assemblyProviders = assemblyProviders; _assemblyFilters = assemblyFilters; _assemblyUtility = assemblyUtility; _assemblySpecifiers = assemblySpecifiers; _contractToImplementorsMap = contractToImplementorsMap; HookUpAssemblyAddedForProviders(); Populate(); }
/// <inheritdoc/> public void Feed(IAssemblies assemblies, IContractToImplementorsMap map) { _scheduler.PerformForEach(assemblies.GetAll(), assembly => { try { var types = assembly.GetTypes(); map.Feed(types); } catch (ReflectionTypeLoadException ex) { foreach (var loaderException in ex.LoaderExceptions) { _logger.Error("TypeFeed failure for assembly {assemblyName} : {loaderExceptionSource} {loaderExceptionMessage}", assembly.FullName, loaderException.Source, loaderException.Message); } } }); }
/// <inheritdoc/> public void Feed(IAssemblies assemblies, IContractToImplementorsMap map) { _scheduler.PerformForEach(assemblies.GetAll(), assembly => { try { var types = assembly.GetTypes(); map.Feed(types); } catch (ReflectionTypeLoadException ex) { foreach (var loaderException in ex.LoaderExceptions) { _logger.Error($"Failed to load: {loaderException.Source} {loaderException.Message}"); } } }); }
/// <summary> /// Initializes a new instance of <see cref="TypeFinder"/> /// </summary> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> public TypeFinder(IContractToImplementorsMap contractToImplementorsMap) { _contractToImplementorsMap = contractToImplementorsMap; }
/// <summary> /// Initializes a new instance of <see cref="DefaultBindings"/> /// </summary> public DefaultBindings(AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplentorsMap) { _assembliesConfiguration = assembliesConfiguration; _assemblyProvider = assemblyProvider; _contractToImplentorsMap = contractToImplentorsMap; }
/// <summary> /// Configure with a specific <see cref="IContainer"/> and the <see cref="BindingLifecycle">Lifecycle</see> of objects set to none /// </summary> /// <param name="container"><see cref="IContainer"/> to configure with</param> /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param> /// <param name="assemblyProvider"><see cref="IAssemblyProvider"/> to use for providing assemblies</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> /// <returns>Configuration object to continue configuration on</returns> public static Configure With(IContainer container, AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplementorsMap) { return With(container, BindingLifecycle.Transient, assembliesConfiguration, assemblyProvider, contractToImplementorsMap); }
public IEnumerable <Type> FindMultiple(IContractToImplementorsMap types, Type type) { var typesFound = types.GetImplementorsFor(type); return(typesFound); }
/// <summary> /// Configure with a specific <see cref="IContainer"/> /// </summary> /// <param name="container"><see cref="IContainer"/> to configure with</param> /// <param name="defaultObjectLifecycle">Default <see cref="BindingLifecycle"/> for object creation/management</param> /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param> /// <param name="assemblyProvider"><see cref="IAssemblyProvider"/> to use for providing assemblies</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> /// <returns>Configuration object to continue configuration on</returns> public static Configure With(IContainer container, BindingLifecycle defaultObjectLifecycle, AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplementorsMap) { return With(container, defaultObjectLifecycle, new DefaultConventions(container), new DefaultBindings(assembliesConfiguration, assemblyProvider, contractToImplementorsMap), assembliesConfiguration); }
public IEnumerable <Type> FindMultiple <T>(IContractToImplementorsMap types) { var typesFound = FindMultiple(types, typeof(T)); return(typesFound); }
#pragma warning disable 1591 // Xml Comments public Type FindSingle <T>(IContractToImplementorsMap types) { var type = FindSingle(types, typeof(T)); return(type); }
/// <summary> /// Configure with a specific <see cref="IContainer"/> and the <see cref="BindingLifecycle">Lifecycle</see> of objects set to none /// </summary> /// <param name="container"><see cref="IContainer"/> to configure with</param> /// <param name="assembliesConfiguration"><see cref="AssembliesConfiguration"/> to use</param> /// <param name="assemblyProvider"><see cref="IAssemblyProvider"/> to use for providing assemblies</param> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> /// <returns>Configuration object to continue configuration on</returns> public static Configure With(IContainer container, AssembliesConfiguration assembliesConfiguration, IAssemblyProvider assemblyProvider, IContractToImplementorsMap contractToImplementorsMap) { return(With(container, BindingLifecycle.Transient, assembliesConfiguration, assemblyProvider, contractToImplementorsMap)); }
/// <summary> /// Initializes a new instance of <see cref="AssemblySpecifiers"/> /// </summary> /// <param name="contractToImplementorsMap"><see cref="IContractToImplementorsMap"/> for keeping track of the relationship between contracts and implementors</param> /// <param name="typeFinder"><see cref="ITypeFinder"/> to use for finding types</param> /// <param name="assemblyRuleBuilder"><see cref="IAssemblyRuleBuilder"/> used for building the rules for assemblies</param> public AssemblySpecifiers(IContractToImplementorsMap contractToImplementorsMap, ITypeFinder typeFinder, IAssemblyRuleBuilder assemblyRuleBuilder) { _typeFinder = typeFinder; _assemblyRuleBuilder = assemblyRuleBuilder; _contractToImplementorsMap = contractToImplementorsMap; }