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; }
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); }
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); }
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; } }
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)); }
/// <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)); }
/// <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)); }