本文整理汇总了C#中SimpleInjector.Container.RegisterSingleOpenGeneric方法的典型用法代码示例。如果您正苦于以下问题:C# Container.RegisterSingleOpenGeneric方法的具体用法?C# Container.RegisterSingleOpenGeneric怎么用?C# Container.RegisterSingleOpenGeneric使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SimpleInjector.Container
的用法示例。
在下文中一共展示了Container.RegisterSingleOpenGeneric方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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
//.........这里部分代码省略.........
示例2: RegisterSingleOpenGenericNonGeneric
public RegisterSingleOpenGenericNonGeneric()
{
var container = new Container();
container.RegisterSingleOpenGeneric(typeof(IRepository<>), typeof(Repository<,>));
}
示例3: 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));
//.........这里部分代码省略.........
示例4: Bootstrap
internal static Container Bootstrap(ContainerConfiguration configuration)
{
var container = new Container();
/**
* Entity Framework Dependency Injection:
*
* There are 2 main dependencies: database initialization, and database seeding.
* Whenever the domain entity model changes, the SQL db will be out of sync.
* The DropOnModelChangeInitializer only drops and recreates the database when the entity model changes.
* The DropAlwaysInitializer drops and recreates the database after each new solution rebuild.
* The BrownfieldInitializer never drops the database, even if the entity model does not match.
* However the initializer only drops and recreates the database, all tables will be empty.
* To populate with new data, use the CompositeDbSeeder.
* It uses a combination of DbContext and raw SQL to populate the database.
* When the BrownfieldDbSeeder is injected, no data will be seeded.
*
* 2012.02.22: There is now a DevelopmentDataSqlSeeder, which is much faster than the CompositeDbSeeder.
*
* When checking in this file, the DropOnModelChangeInitializer and DevelopmentDataSqlSeeder
* should be active. All other seeders and initializers should be commented out.
*/
if (configuration.IsDeployedToCloud)
{
container.Register<IDatabaseInitializer<UCosmicContext>, BrownfieldInitializer>();
//container.Register<ISeedData, BrownfieldSeeder>();
}
else
{
container.Register<IDatabaseInitializer<UCosmicContext>, DropOnModelChangeInitializer>();
//container.Register<IDatabaseInitializer<UCosmicContext>, DropAlwaysInitializer>();
//container.Register<IDatabaseInitializer<UCosmicContext>, BrownfieldInitializer>();
container.Register<ISeedData, CompositeSqlSeeder>();
//container.Register<ISeedData, CompositeEntitySeeder>();
//container.Register<ISeedData, BrownfieldSeeder>();
}
// register 1 DbContext for all implemented interfaces
container.RegisterPerWebRequest<UCosmicContext>();
container.Register<IUnitOfWork>(container.GetInstance<UCosmicContext>);
container.Register<IQueryEntities>(container.GetInstance<UCosmicContext>);
container.Register<ICommandEntities>(container.GetInstance<UCosmicContext>);
container.RegisterInitializer<UCosmicContext>(container.InjectProperties);
// other interfaces related to DbContext
//container.Register<ICommandObjects, ObjectCommander>();
// general purpose interfaces
container.Register<IStorePasswords, DotNetMembershipProvider>();
container.Register<ISignUsers, DotNetFormsAuthentication>();
container.Register<IManageConfigurations, DotNetConfigurationManager>();
container.Register<ILogExceptions, ElmahExceptionLogger>();
container.Register<IConsumeHttp, WebRequestHttpConsumer>();
container.Register<ISendMail, SmtpMailSender>();
// SAML interfaces
container.Register<IProvideSaml2Service, ComponentSpaceSaml2ServiceProvider>();
container.Register<IParseSaml2Metadata, ComponentSpaceSaml2MetadataParser>();
container.Register<IStoreSamlCertificates, RealSamlCertificateStorage>();
// NGeo interfaces
container.RegisterPerWebRequest<IConsumeGeoNames, GeoNamesClient>();
container.RegisterPerWebRequest<IContainGeoNames>(() => new GeoNamesContainer(configuration.GeoNamesUserName));
container.RegisterPerWebRequest<IConsumeGeoPlanet, GeoPlanetClient>();
container.RegisterPerWebRequest<IContainGeoPlanet>(() => new GeoPlanetContainer(configuration.GeoPlanetAppId));
container.RegisterPerWebRequest<IConsumePlaceFinder, PlaceFinderClient>();
// load assemblies for IoC reflection
var assemblies = AppDomain.CurrentDomain.GetAssemblies()
.Where(a => !a.FullName.StartsWith("Microsoft.Web.Mvc,"))
.ToArray();
// fluent validation open generics
container.RegisterManyForOpenGeneric(typeof(IValidator<>), assemblies);
// add unregistered type resolution for objects missing an IValidator<T>
container.RegisterSingleOpenGeneric(typeof(IValidator<>), typeof(UnspecifiedValidator<>));
// open generic decorator chains http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=91
container.RegisterManyForOpenGeneric(typeof(IHandleCommands<>), assemblies);
// send emails in a new thread
container.RegisterRunAsyncCommandHandlerProxy<SendEmailMessageCommand>();
// register fluent validators on commands
container.RegisterDecorator(typeof(IHandleCommands<>),
typeof(FluentValidationCommandDecorator<>));
//container.RegisterOpenGenericDecorator(typeof(IHandleCommands<>),
// typeof(FluentValidationCommandDecorator<>));
// query processing
container.RegisterSingle<SimpleQueryProcessor>();
container.Register<IProcessQueries>(container.GetInstance<SimpleQueryProcessor>);
container.RegisterManyForOpenGeneric(typeof(IHandleQueries<,>), assemblies);
// verify container
container.Verify();
return container;
//.........这里部分代码省略.........