本文整理汇总了C#中SimpleInjector.Container.RegisterAll方法的典型用法代码示例。如果您正苦于以下问题:C# Container.RegisterAll方法的具体用法?C# Container.RegisterAll怎么用?C# Container.RegisterAll使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SimpleInjector.Container
的用法示例。
在下文中一共展示了Container.RegisterAll方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InitializeContainer
private static void InitializeContainer(Container container)
{
var pluginDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Bin\Gadgets");
var pluginAssemblies =
from file in new DirectoryInfo(pluginDirectory).GetFiles()
where file.Extension == ".dll"
select Assembly.LoadFile(file.FullName);
var pluginTypes =
(from dll in pluginAssemblies
from type in dll.GetExportedTypes()
where typeof (IGadget).IsAssignableFrom(type)
where !type.IsAbstract
where !type.IsGenericTypeDefinition
select type).ToList();
container.RegisterAll<IGadget>(pluginTypes);
foreach (var pluginType in pluginTypes)
{
container.Register(pluginType);
}
// For instance:
// container.Register<IUserRepository, SqlUserRepository>();
}
示例2: GetServices_ReturnsInstancesOfService
public void GetServices_ReturnsInstancesOfService()
{
var container = new Container();
container.RegisterAll<IFakeMultipleServices>(typeof(FakeMultipleService1), typeof(FakeMultipleService2), typeof(FakeMultipleService3));
container.Verify();
var resolver = new WebApiDependencyResolver(container);
var services = resolver.GetServices(typeof(IFakeMultipleServices)).ToArray();
services.ShouldNotBeNull();
services.Length.ShouldEqual(3);
var serviceTypes = services.Select(x => x.GetType()).ToArray();
serviceTypes.ShouldContain(typeof(FakeMultipleService1));
serviceTypes.ShouldContain(typeof(FakeMultipleService2));
serviceTypes.ShouldContain(typeof(FakeMultipleService3));
}
示例3: RegisterDependencies
/// <summary>
/// Discovers any IEnumerable dependencies of the specified type and attempts to register them.
/// </summary>
/// <param name="concreteType">Concrete type for which the dependencies should be discovered
/// and registered</param>
/// <param name="container">SimpleInjector container in which the dependencies should be registered.</param>
/// <param name="options">Options to apply to the discovery and registration process.</param>
public void RegisterDependencies(Type concreteType, Container container, IAutoRegistrationOptions options)
{
foreach (var ctor in concreteType.GetConstructors().Where((x) => x.IsPublic))
{
foreach (var param in ctor.GetParameters().Where((x) => typeof(System.Collections.IEnumerable).IsAssignableFrom(x.ParameterType)))
{
var genericArgType = param.ParameterType.GenericTypeArguments.FirstOrDefault();
if (genericArgType != null
&& genericArgType.IsInterface
&& options.AutoRegistrationEnabledProvider.IsAutoRegistrationEnabled(genericArgType))
{
container.RegisterAll(genericArgType, options.ImplementationProvider.GetConcreteImplementionsOf(genericArgType));
}
}
}
}
开发者ID:keithaknight,项目名称:SimpleInjector.AutoRegistration,代码行数:24,代码来源:EnumerableDependencyRegistrationProvider.cs
示例4: InitContainer
internal void InitContainer()
{
var assembly = typeof(IOptionsDialogWatcher).Assembly;
var exportedTypes = assembly.GetExportedTypes();
var classes = exportedTypes.Where(t => t.IsClass);
var interfaces = exportedTypes.Where(t => t.IsInterface);
var registrations = from @interface in interfaces
let types = classes.Where(@interface.IsAssignableFrom)
where types.Count() == 1
select new
{
Interface = @interface,
Implementation = types.First()
};
_container = new Container();
_container.RegisterAll<IWindowModifier>(classes.Where(typeof(IWindowModifier).IsAssignableFrom));
_container.RegisterWithContext(CyclicWorkerContexts);
registrations.ToList().ForEach(r => _container.Register(r.Interface, r.Implementation));
}
示例5: Bootstrap
private static Container Bootstrap()
{
var container = new Container();
// register database types
container.Register<IDatabaseInitializer<UCosmicContext>, BrownfieldInitializer>();
container.Register<ISeedData, BrownfieldSeeder>();
container.Register<UCosmicContext>();
container.Register<IWrapDataConcerns, DataConcernsWrapper>();
container.RegisterInitializer<UCosmicContext>(container.InjectProperties);
// register browsers
container.RegisterSingle(() => new ChromeDriver(GetChromeDriverDirectory()));
container.RegisterSingle(() => new InternetExplorerDriver());
container.RegisterSingle(() => new FirefoxDriver());
var browsers = AllBrowsers(container);
container.RegisterAll(browsers);
// register other stuff
container.Register<IManageConfigurations, DotNetConfigurationManager>();
container.Verify();
return container;
}
示例6: AddInterfaceForEachDerivedType
//private static void RegisterAllPersisters()
//{
// var baseType = typeof(CommandBase);
// var allCommands =
// AppDomain.CurrentDomain.GetAssemblies()
// .SelectMany(x => x.GetTypes())
// .Where(baseType.IsAssignableFrom)
// .Where(x => !x.IsAbstract)
// .Distinct()
// .ToArray();
// foreach (var command in allCommands)
// {
// if (command.IsGenericType)
// {
// // command.GetGenericArguments()[0].GetGenericParameterConstraints()
// // go throught all of that type and find the icommandsaves for it!
// var x = command.GetGenericParameterConstraints();
// }
// else
// {
// var saverType = typeof(ICommandSave<>).MakeGenericType(command);
// var allCommandSavers =
// AppDomain.CurrentDomain.GetAssemblies()
// .SelectMany(x => x.GetTypes())
// .Where(saverType.IsAssignableFrom)
// .Where(x => !x.IsAbstract)
// .Distinct()
// .ToArray();
// }
// }
//}
private static void AddInterfaceForEachDerivedType(
Container container,
Type baseType,
Type interfaceType)
{
var allTypesDerivedFromBase =
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())
.Where(baseType.IsAssignableFrom)
.Where(x => !x.IsAbstract)
.Distinct()
.ToArray();
var genericInterface = interfaceType.GetGenericTypeDefinition();
foreach (var concrete in allTypesDerivedFromBase)
{
var concreteInterface = genericInterface.MakeGenericType(concrete);
Trace.Write("Interface " + concreteInterface.ToString());
if (!concrete.IsGenericType)
{
var concreteImplementations = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())
.Where(x => x.GetInterfaces().Any())
.Where(concreteInterface.IsAssignableFrom)
.Distinct()
.ToList();
if (concreteImplementations.Any())
{
Trace.WriteLine(" implemented by:");
foreach (var impl in concreteImplementations)
{
Trace.WriteLine("-> " + impl.ToString());
}
container.RegisterAll(concreteInterface, concreteImplementations);
}
else
{
Trace.WriteLine(" has not implementations.");
}
}
else
{
Trace.WriteLine("'s generic type param is itself generic and must be registered manually.");
}
}
}
示例7: SetUp
public static void SetUp(Container container)
{
bool securityTrimmingEnabled = false;
bool enableLocalization = true;
string absoluteFileName = HostingEnvironment.MapPath("~/Mvc.sitemap");
TimeSpan absoluteCacheExpiration = TimeSpan.FromMinutes(5);
string[] includeAssembliesForScan = new string[] { "$AssemblyName$" };
// Extension to allow resolution of arrays by GetAllInstances (natively based on IEnumerable).
// source from: https://simpleinjector.codeplex.com/wikipage?title=CollectionRegistrationExtensions
AllowToResolveArraysAndLists(container);
var currentAssembly = typeof(MvcSiteMapProviderContainerInitializer).Assembly;
var siteMapProviderAssembly = typeof(SiteMaps).Assembly;
var allAssemblies = new Assembly[] { currentAssembly, siteMapProviderAssembly };
var excludeTypes = new Type[]
{
typeof (SiteMapNodeVisibilityProviderStrategy),
typeof (SiteMapXmlReservedAttributeNameProvider),
typeof (SiteMapBuilderSetStrategy),
typeof (ControllerTypeResolverFactory),
// Added 2013-06-28 by eric-b to avoid default singleton registration:
typeof(XmlSiteMapController),
// Added 2013-06-28 by eric-b for SimpleInjector.Verify method:
typeof(PreservedRouteParameterCollection),
typeof(MvcResolver),
typeof(MvcSiteMapProvider.SiteMap),
typeof(MetaRobotsValueCollection),
typeof(RoleCollection),
typeof(SiteMapPluginProvider),
typeof(ControllerTypeResolver),
typeof(RouteValueDictionary),
typeof(AttributeDictionary)
};
var multipleImplementationTypes = new Type[]
{
typeof (ISiteMapNodeUrlResolver),
typeof (ISiteMapNodeVisibilityProvider),
typeof (IDynamicNodeProvider)
};
// Single implementations of interface with matching name (minus the "I").
CommonConventions.RegisterDefaultConventions(
(interfaceType, implementationType) => container.RegisterSingle(interfaceType, implementationType),
new Assembly[] { siteMapProviderAssembly },
allAssemblies,
excludeTypes,
string.Empty);
// Multiple implementations of strategy based extension points
CommonConventions.RegisterAllImplementationsOfInterfaceSingle(
(interfaceType, implementationTypes) => container.RegisterAll(interfaceType, implementationTypes),
multipleImplementationTypes,
allAssemblies,
new Type[0],
"^Composite");
container.Register<XmlSiteMapController>();
// Visibility Providers
container.RegisterSingle<ISiteMapNodeVisibilityProviderStrategy>(() =>
new SiteMapNodeVisibilityProviderStrategy(
container.GetAllInstances
<ISiteMapNodeVisibilityProvider>().
ToArray(), string.Empty));
// Pass in the global controllerBuilder reference
container.RegisterSingle<ControllerBuilder>(() => ControllerBuilder.Current);
container.RegisterSingle<IControllerBuilder, ControllerBuilderAdaptor>();
container.RegisterSingle<IBuildManager, BuildManagerAdaptor>();
container.RegisterSingle<IControllerTypeResolverFactory>(() =>
new ControllerTypeResolverFactory(new string[0],
container.GetInstance
<IControllerBuilder
>(),
container.GetInstance
<IBuildManager>()));
// Configure Security
container.RegisterSingle<AuthorizeAttributeAclModule>(() => new AuthorizeAttributeAclModule(
container.GetInstance<IMvcContextFactory>(),
container.GetInstance<IObjectCopier>(),
container.GetInstance<IControllerDescriptorFactory>(),
container.GetInstance<IControllerBuilder>(),
container.GetInstance<IAuthorizeAttributeBuilder>(),
container.GetInstance<IGlobalFilterProvider>()));
container.RegisterAll<IAclModule>(typeof(AuthorizeAttributeAclModule), typeof(XmlRolesAclModule));
container.RegisterSingle<IAclModule>(() => new CompositeAclModule(container.GetAllInstances<IAclModule>().ToArray()));
// Setup cache
#if NET35
container.RegisterSingleOpenGeneric(typeof(ICacheProvider<>), typeof(AspNetCacheProvider<>));
container.RegisterSingle<ICacheDependency>(() => new AspNetFileCacheDependency(absoluteFileName));
#else
//.........这里部分代码省略.........
示例8: RegisterAll3Generic
public RegisterAll3Generic()
{
var container = new Container();
container.RegisterAll<ICommon>(new List<Type> { typeof(CommonImpl1), typeof(CommonImpl2) });
}
示例9: Initialize
/// <summary>
/// Initializes the composition of the <see cref="DazzleDatabase"/>
/// </summary>
private void Initialize()
{
// Composition root.
container = new Container();
container.Register<Grammar, DqlGrammar>();
container.Register<LanguageData>();
container.Register<IQueryProcessor, LevelDbQueryProcessor>();
container.Register<DqlQueryReader>();
container.Register<DqlQueryPlanBuilder>();
container.RegisterAll(typeof(IOperationBuilder), new Type[] { typeof(SelectOperationBuilder) });
}
示例10: SetUp
public static void SetUp(Container container)
{
bool enableLocalization = true;
string absoluteFileName = HostingEnvironment.MapPath("~/Mvc.sitemap");
TimeSpan absoluteCacheExpiration = TimeSpan.FromMinutes(5);
bool visibilityAffectsDescendants = true;
bool useTitleIfDescriptionNotProvided = true;
#if Demo
// Settings for MvcMusicStore demo: don't copy into your project
bool securityTrimmingEnabled = true;
string[] includeAssembliesForScan = new string[] { "Mvc Music Store" };
#else
bool securityTrimmingEnabled = false;
string[] includeAssembliesForScan = new string[] { "$AssemblyName$" };
#endif
// Extension to allow resolution of arrays by GetAllInstances (natively based on IEnumerable).
// source from: https://simpleinjector.codeplex.com/wikipage?title=CollectionRegistrationExtensions
AllowToResolveArraysAndLists(container);
var currentAssembly = typeof(MvcSiteMapProviderContainerInitializer).Assembly;
var siteMapProviderAssembly = typeof(SiteMaps).Assembly;
var allAssemblies = new Assembly[] { currentAssembly, siteMapProviderAssembly };
var excludeTypes = new Type[]
{
// Use this array to add types you wish to explicitly exclude from convention-based
// auto-registration. By default all types that either match I[TypeName] = [TypeName] or
// I[TypeName] = [TypeName]Adapter will be automatically wired up as long as they don't
// have the [ExcludeFromAutoRegistrationAttribute].
//
// If you want to override a type that follows the convention, you should add the name
// of either the implementation name or the interface that it inherits to this list and
// add your manual registration code below. This will prevent duplicate registrations
// of the types from occurring.
// Example:
// typeof(SiteMap),
// typeof(SiteMapNodeVisibilityProviderStrategy)
};
var multipleImplementationTypes = new Type[]
{
typeof(ISiteMapNodeUrlResolver),
typeof(ISiteMapNodeVisibilityProvider),
typeof(IDynamicNodeProvider)
};
// Matching type name (I[TypeName] = [TypeName]) or matching type name + suffix Adapter (I[TypeName] = [TypeName]Adapter)
// and not decorated with the [ExcludeFromAutoRegistrationAttribute].
CommonConventions.RegisterDefaultConventions(
(interfaceType, implementationType) => container.RegisterSingle(interfaceType, implementationType),
new Assembly[] { siteMapProviderAssembly },
allAssemblies,
excludeTypes,
string.Empty);
// Multiple implementations of strategy based extension points (and not decorated with [ExcludeFromAutoRegistrationAttribute]).
CommonConventions.RegisterAllImplementationsOfInterfaceSingle(
(interfaceType, implementationTypes) => container.RegisterAll(interfaceType, implementationTypes),
multipleImplementationTypes,
allAssemblies,
excludeTypes,
string.Empty);
container.Register<XmlSiteMapController>();
// Visibility Providers
container.RegisterSingle<ISiteMapNodeVisibilityProviderStrategy>(() =>
new SiteMapNodeVisibilityProviderStrategy(
container.GetAllInstances<ISiteMapNodeVisibilityProvider>().ToArray(), string.Empty));
// Pass in the global controllerBuilder reference
container.RegisterSingle<ControllerBuilder>(() => ControllerBuilder.Current);
container.RegisterSingle<IControllerTypeResolverFactory>(() =>
new ControllerTypeResolverFactory(
new string[0],
container.GetInstance<IControllerBuilder>(),
container.GetInstance<IBuildManager>()));
// Configure Security
container.RegisterAll<IAclModule>(typeof(AuthorizeAttributeAclModule), typeof(XmlRolesAclModule));
container.RegisterSingle<IAclModule>(() => new CompositeAclModule(container.GetAllInstances<IAclModule>().ToArray()));
// Setup cache
#if NET35
container.RegisterSingleOpenGeneric(typeof(ICacheProvider<>), typeof(AspNetCacheProvider<>));
container.RegisterSingle<ICacheDependency>(() => new AspNetFileCacheDependency(absoluteFileName));
#else
container.RegisterSingle<System.Runtime.Caching.ObjectCache>(() => System.Runtime.Caching.MemoryCache.Default);
container.RegisterSingleOpenGeneric(typeof(ICacheProvider<>), typeof(RuntimeCacheProvider<>));
container.RegisterSingle<ICacheDependency>(() => new RuntimeFileCacheDependency(absoluteFileName));
#endif
container.RegisterSingle<ICacheDetails>(() => new CacheDetails(absoluteCacheExpiration, TimeSpan.MinValue, container.GetInstance<ICacheDependency>()));
// Configure the visitors
container.RegisterSingle<ISiteMapNodeVisitor, UrlResolvingSiteMapNodeVisitor>();
// Prepare for the sitemap node providers
container.RegisterSingle<IReservedAttributeNameProvider>(() => new ReservedAttributeNameProvider(new string[0]));
container.RegisterSingle<IXmlSource>(() => new FileXmlSource(absoluteFileName));
//.........这里部分代码省略.........
示例11: RegisterServices
public void RegisterServices(Container container)
{
container.RegisterAll<IModelBinder>(typeof(TaggableModelModelBinder));
}
示例12: RegisterAllNonGeneric
public RegisterAllNonGeneric()
{
var container = new Container();
container.RegisterAll(typeof(ICommon), new[] { typeof(CommonImpl1), typeof(CommonImpl2) });
}
示例13: RegisterAllGeneric
public RegisterAllGeneric()
{
var container = new Container();
container.RegisterAll<ICommon>(typeof(CommonImpl1), typeof(CommonImpl2));
}
示例14: CreateContainer
private static Container CreateContainer()
{
var container = new Container();
container.RegisterSingle<IMessageProcessOverseer, MessageProcessOverseer>();
container.RegisterSingle<IVariableHandler, VariableHandler>();
#if DEBUG
container
.RegisterSingle<IDataStoreManager, InMemoryDataStoreManager>();
#else
container
.RegisterSingle<IDataStoreManager, SqliteDataStoreManager>();
#endif
// Register all the IModules in the currently loaded assemblies
var execPath = Assembly.GetExecutingAssembly().CodeBase;
var assemblyPath = Environment.CurrentDirectory;
LoadAssembliesFromPath(assemblyPath);
var moduleTypes = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes())
.Where(
t =>
typeof(IModule).IsAssignableFrom(t) &&
t != typeof(IModule) && !t.IsAbstract)
.ToList();
foreach (var moduleType in moduleTypes)
{
container.RegisterSingle(moduleType, moduleType);
}
container.RegisterAll<IModule>(moduleTypes);
return container;
}