本文整理汇总了C#中SimpleInjector.Container.RegisterInitializer方法的典型用法代码示例。如果您正苦于以下问题:C# Container.RegisterInitializer方法的具体用法?C# Container.RegisterInitializer怎么用?C# Container.RegisterInitializer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SimpleInjector.Container
的用法示例。
在下文中一共展示了Container.RegisterInitializer方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Application_Start
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// Allow Any Certificates
// This should not be the same in Production
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
// Create the container as usual.
var container = new Container();
container.Options.PropertySelectionBehavior = new ImportPropertySelectionBehavior();
container.Register<IErrorSignaler, ErrorSignaler>(Lifestyle.Singleton);
container.Register<IHttpClientHelper, HttpClientHelper>(Lifestyle.Singleton);
container.Register<IConfigurationHelper, ConfigurationHelper>(Lifestyle.Singleton);
// SI Attributes Dependency Injection
container.RegisterInitializer<BlogApiAuthorizationAttribute>(a => a.ErrorSignaler = container.GetInstance<ErrorSignaler>());
container.RegisterInitializer<BlogAuthorizationAttribute>(a => a.ErrorSignaler = container.GetInstance<ErrorSignaler>());
// This is an extension method from the integration package.
container.RegisterMvcControllers(System.Reflection.Assembly.GetExecutingAssembly());
container.RegisterMvcIntegratedFilterProvider();
container.Verify();
DependencyResolver.SetResolver(new SimpleInjector.Integration.Web.Mvc.SimpleInjectorDependencyResolver(container));
}
示例2: ConfigureContainer
private static Container ConfigureContainer()
{
var container = new Container();
// Reset this line to reconfigure for production
container.RegisterSingleton<ISettingsService>(new TestSettingsService());
//container.RegisterSingleton<ISettingsService>(new ProductionSettingsService());
container.Register<ILogger, NlogLoggerAdapter>();
container.RegisterSingleton<IPlantPhotoService, PlantPhotoService>();
container.RegisterSingleton<IImageRenameService, ImageRenameService>();
container.RegisterSingleton<IRenameOperationsManager, RenameOperationsManager>();
container.RegisterInitializer<IImageRenameService>(svc =>
{
svc.Logger = new NlogLoggerAdapter(LogManager.GetLogger("logFile"));
});
container.RegisterInitializer<IRenameOperationsManager>(mgr =>
{
mgr.ConsoleLogger = new NlogLoggerAdapter(LogManager.GetLogger("logConsole"));
});
return container;
}
示例3: InitializeContainer
private static void InitializeContainer(Container container)
{
var repositoryAssembly = typeof (MvcApplication).Assembly;
var registrations =
from type in repositoryAssembly.GetExportedTypes()
where type.Namespace.Contains("MvcIoC.Models")
where type.GetInterfaces().Any()
select new
{
Service = type.GetInterfaces().First(),
Implementation = type
};
foreach (var reg in registrations)
{
container.Register(reg.Service, reg.Implementation, Lifestyle.Transient);
}
container.RegisterInitializer<ProteinTrackerBasePage>(
p => p.AnalyticsService = container.GetInstance<IAnalyticsService>());
// For instance:
// container.Register<IUserRepository, SqlUserRepository>();
}
示例4: RegisterInitializer_BaseClass_RunsInitializerOnSubClass
public void RegisterInitializer_BaseClass_RunsInitializerOnSubClass()
{
var container = new Container();
container.Register<ITestService, TestService>();
container.RegisterInitializer<TestContainer>(c => c.TestService = container.GetInstance<ITestService>());
var testContainer = container.GetInstance<TestContainerDerivative>();
testContainer.ShouldNotBeNull();
testContainer.TestService.ShouldNotBeNull();
}
示例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: Configure
private static void Configure(ConsoleApp app)
{
_container = new Container();
_container.Options.AllowOverridingRegistrations = true;
app.Arguments = app.Arguments ?? new ArgumentTypeCollection();
app.ViewEngines = app.ViewEngines ?? new ViewEngineCollection(_container);
_container.RegisterInitializer<Command>(command =>
{
command.ViewEngines = app.ViewEngines;
});
CommandBuilder.Current.SetCommandFactory(new SimpleInjectorCommandFactory(_container));
app.ViewEngines.Add(new MustacheViewEngine());
app.Configure(_container);
_container.Verify();
}
示例7: GetInitializedContainer
public Container GetInitializedContainer(IAppBuilder app)
{
var container = new Container();
container.RegisterSingle(app);
//allows objects to be reused when inside web request, or created fresh when used on background threads or outside a request context
var hybridLifestyle = Lifestyle.CreateHybrid(
() => HttpContext.Current != null, new WebRequestLifestyle(), Lifestyle.Transient);
container.RegisterPerWebRequest<TicketDeskContextSecurityProvider>();
container.Register(() => new TdPushNotificationContext(), hybridLifestyle);
container.Register(() => HttpContext.Current != null ?
new TdDomainContext(container.GetInstance<TicketDeskContextSecurityProvider>()) :
new TdDomainContext(),
hybridLifestyle);
container.Register(() => new TdIdentityContext(), hybridLifestyle);
container.Register<IUserStore<TicketDeskUser>>(() =>
new UserStore<TicketDeskUser>(container.GetInstance<TdIdentityContext>()),
hybridLifestyle);
container.Register<IRoleStore<TicketDeskRole, string>>(() =>
new RoleStore<TicketDeskRole>(container.GetInstance<TdIdentityContext>()),
hybridLifestyle);
container.RegisterPerWebRequest(() =>
{
IOwinContext context;
try
{
context = HttpContext.Current.GetOwinContext();
}
catch (InvalidOperationException)
{
//avoid exception when this is called before the owin environment is fully initialized
if (container.IsVerifying())
{
return new FakeAuthenticationManager();
}
throw;
}
return context.Authentication;
}
);
container.RegisterPerWebRequest<SignInManager<TicketDeskUser, string>, TicketDeskSignInManager>();
container.RegisterPerWebRequest<TicketDeskRoleManager>();
container.RegisterInitializer<TicketDeskUserManager>(manager =>
manager.ConfigureDataProtection(app));
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
return container;
}
示例8: 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;
//.........这里部分代码省略.........