Ejemplo n.º 1
0
        private static TinyIoCContainer ConfigureContainer(IEnumerable<IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, INancyEnvironment diagnosticsEnvironment, ITypeCatalog typeCatalog, IAssemblyCatalog assemblyCatalog)
        {
            var diagContainer = new TinyIoCContainer();

            diagContainer.Register<IInteractiveDiagnostics, InteractiveDiagnostics>();
            diagContainer.Register<IRequestTracing>(requestTracing);
            diagContainer.Register<IRootPathProvider>(rootPathProvider);
            diagContainer.Register<NancyInternalConfiguration>(configuration);
            diagContainer.Register<IModelBinderLocator, DefaultModelBinderLocator>();
            diagContainer.Register<IBinder, DefaultBinder>();
            diagContainer.Register<IFieldNameConverter, DefaultFieldNameConverter>();
            diagContainer.Register<BindingDefaults, BindingDefaults>();
            diagContainer.Register<INancyEnvironment>(diagnosticsEnvironment);
            diagContainer.Register<ISerializer>(new DefaultJsonSerializer(diagnosticsEnvironment));
            diagContainer.Register<ITypeCatalog>(typeCatalog);
            diagContainer.Register<IAssemblyCatalog>(assemblyCatalog);


            foreach (var diagnosticsProvider in providers)
            {
                var key = string.Concat(
                    diagnosticsProvider.GetType().FullName,
                    "_",
                    diagnosticsProvider.DiagnosticObject.GetType().FullName);

                diagContainer.Register<IDiagnosticsProvider>(diagnosticsProvider, key);
            }

            foreach (var moduleType in typeCatalog.GetTypesAssignableTo<DiagnosticModule>())
            {
                diagContainer.Register(typeof(INancyModule), moduleType, moduleType.FullName).AsMultiInstance();
            }

            return diagContainer;
        }
Ejemplo n.º 2
0
        private static TinyIoCContainer ConfigureContainer(IEnumerable <IDiagnosticsProvider> providers, IRootPathProvider rootPathProvider, IRequestTracing requestTracing, NancyInternalConfiguration configuration, INancyEnvironment diagnosticsEnvironment, ITypeCatalog typeCatalog)
        {
            var diagContainer = new TinyIoCContainer();

            diagContainer.Register <IInteractiveDiagnostics, InteractiveDiagnostics>();
            diagContainer.Register <IRequestTracing>(requestTracing);
            diagContainer.Register <IRootPathProvider>(rootPathProvider);
            diagContainer.Register <NancyInternalConfiguration>(configuration);
            diagContainer.Register <IModelBinderLocator, DefaultModelBinderLocator>();
            diagContainer.Register <IBinder, DefaultBinder>();
            diagContainer.Register <IFieldNameConverter, DefaultFieldNameConverter>();
            diagContainer.Register <BindingDefaults, BindingDefaults>();
            diagContainer.Register <INancyEnvironment>(diagnosticsEnvironment);
            diagContainer.Register <ISerializer>(new DefaultJsonSerializer(diagnosticsEnvironment));
            diagContainer.Register <ITypeCatalog>(typeCatalog);

            foreach (var diagnosticsProvider in providers)
            {
                var key = string.Concat(
                    diagnosticsProvider.GetType().FullName,
                    "_",
                    diagnosticsProvider.DiagnosticObject.GetType().FullName);

                diagContainer.Register <IDiagnosticsProvider>(diagnosticsProvider, key);
            }

            foreach (var moduleType in typeCatalog.GetTypesAssignableTo <DiagnosticModule>())
            {
                diagContainer.Register(typeof(INancyModule), moduleType, moduleType.FullName).AsMultiInstance();
            }

            return(diagContainer);
        }
Ejemplo n.º 3
0
        private static CollectionTypeRegistration ScanForCustomImplementations(ITypeCatalog typeCatalog, Lifetime lifetime)
        {
            var customImplementationTypes = typeCatalog
                                            .GetTypesAssignableTo <TService>(ScanningStrategies.ExcludeNancy)
                                            .ToArray();

            if (customImplementationTypes.Length > 0)
            {
                return(new CollectionTypeRegistration(typeof(TService), customImplementationTypes, lifetime));
            }

            return(null);
        }
Ejemplo n.º 4
0
        private static TypeRegistration ScanForCustomRegistration(ITypeCatalog typeCatalog, Lifetime lifetime)
        {
            // TODO: Throw on multiple results?
            var customImplementationType = typeCatalog
                                           .GetTypesAssignableTo <TService>(ScanningStrategies.ExcludeNancy)
                                           .FirstOrDefault();

            if (customImplementationType != null)
            {
                return(new TypeRegistration(typeof(TService), customImplementationType, lifetime));
            }

            return(null);
        }
        private static bool GetDebugMode(ITypeCatalog typeCatalog)
        {
            try
            {
                var assembliesInDebug = typeCatalog
                                        .GetTypesAssignableTo <INancyModule>(TypeResolveStrategies.ExcludeNancy)
                                        .Select(x => x.Assembly.GetCustomAttributes(typeof(DebuggableAttribute), true))
                                        .Where(x => x.Length != 0);

                return(assembliesInDebug.Any(d => ((DebuggableAttribute)d[0]).IsJITTrackingEnabled));
            }
            catch
            {
                return(false);
            }
        }
        private static bool GetDebugMode(ITypeCatalog typeCatalog)
        {
            try
            {
                var assembliesInDebug = typeCatalog
                    .GetTypesAssignableTo<INancyModule>(TypeResolveStrategies.ExcludeNancy)
                    .Select(x => x.Assembly.GetCustomAttributes(typeof(DebuggableAttribute), true))
                    .Where(x => x.Length != 0);

                return assembliesInDebug.Any(d => ((DebuggableAttribute)d[0]).IsJITTrackingEnabled);
            }
            catch
            {
                return false;
            }
        }
Ejemplo n.º 7
0
 private static IReadOnlyCollection <Type> GetAvailableBootstrapperTypes(ITypeCatalog types)
 {
     return(types.GetTypesAssignableTo <INancyBootstrapper>(TypeResolveStrategies.ExcludeNancy));
 }
 public static IEnumerable <Type> GetTypesAssignableTo <T>(this ITypeCatalog typeCatalog)
 {
     return(typeCatalog.GetTypesAssignableTo(typeof(T)));
 }
 public static IEnumerable <Type> GetTypesAssignableTo <T>(this ITypeCatalog typeCatalog, ScanningStrategy strategy)
 {
     return(typeCatalog.GetTypesAssignableTo(typeof(T), strategy));
 }
 public static IEnumerable <Type> GetTypesAssignableTo(this ITypeCatalog typeCatalog, Type type)
 {
     return(typeCatalog.GetTypesAssignableTo(type, ScanningStrategies.All));
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Gets all types that are assignable to the provided <typeparamref name="TType"/>.
 /// </summary>
 /// <param name="typeCatalog">The <see cref="ITypeCatalog"/> instance where the types should be retrieved from.</param>
 /// <param name="strategy">A <see cref="TypeResolveStrategy"/> that should be used then retrieving types.</param>
 /// <typeparam name="TType">The <see cref="Type"/> that returned types should be assignable to.</typeparam>
 /// <returns>An <see cref="IReadOnlyCollection{T}"/> of <see cref="Type"/> instances.</returns>
 public static IReadOnlyCollection <Type> GetTypesAssignableTo <TType>(this ITypeCatalog typeCatalog, TypeResolveStrategy strategy)
 {
     return(typeCatalog.GetTypesAssignableTo(typeof(TType), strategy));
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Gets all <see cref="Type"/> instances that are assignable to <paramref name="type"/>, using <see cref="TypeResolveStrategies.All"/>.
 /// </summary>
 /// <param name="typeCatalog">The <see cref="ITypeCatalog"/> instance where the types should be retrieved from.</param>
 /// <param name="type">The <see cref="Type"/> that all returned types should be assingable to.</param>
 /// <returns>An <see cref="IReadOnlyCollection{T}"/> of <see cref="Type"/> instances.</returns>
 public static IReadOnlyCollection <Type> GetTypesAssignableTo(this ITypeCatalog typeCatalog, Type type)
 {
     return(typeCatalog.GetTypesAssignableTo(type, TypeResolveStrategies.All));
 }