/// <summary>
        /// Creates bindings using conventions
        /// </summary>
        /// <param name="kernel">The kernel for which the bindings are created.</param>
        /// <param name="configure">The binding convention configuration.</param>
        public static void Bind(this IBindingRoot kernel, Action <IFromSyntax> configure)
        {
            if (configure == null)
            {
                throw new ArgumentNullException("configure");
            }

#if !NO_ASSEMBLY_SCANNING
            var assemblyNameRetriever = new AssemblyNameRetriever();
            try
            {
                var builder = new ConventionSyntax(
                    new ConventionBindingBuilder(kernel, new TypeSelector()),
                    new AssemblyFinder(assemblyNameRetriever),
                    new TypeFilter(),
                    new BindingGeneratorFactory(new BindableTypeSelector()));
                configure(builder);
            }
            finally
            {
                assemblyNameRetriever.Dispose();
            }
#else
            var builder = new ConventionSyntax(
                new ConventionBindingBuilder(kernel, new TypeSelector()),
                new TypeFilter(),
                new BindingGeneratorFactory(new BindableTypeSelector()));
            configure(builder);
#endif
        }
        public static IIncludingNonePublicTypesSelectSyntax FromProductionAssemblies(this IFromSyntax syntax)
        {
            using (var assemblyNameRetriever = new AssemblyNameRetriever())
            {
                var assemblyFinder = new AssemblyFinder(assemblyNameRetriever);

                IEnumerable <string> assemblyFileNames = assemblyFinder
                                                         .FindAssembliesMatching(new[] { ScanPattern })
                                                         .Where(assemblyFileName => IsProductionAssembly(assemblyFileName));

                return(syntax.From(assemblyFileNames));
            }
        }
 public AssemblyNameRetrieverContext()
 {
     this.AssemblyNameRetriever = new AssemblyNameRetriever();
 }