// Step 1. Create the builder with which components/services are registered.
var builder = new ContainerBuilder();
// Step 2.
RegisterTypesWithAutoFac(builder); // Register your types here (see below)
// Step 3.
// Build the container to finalize registrations
// and prepare for object resolution.
var container = builder.Build();
// Step 4.
// Now you can resolve services using Autofac.
using(var scope = container.BeginLifetimeScope())
{
var reader = scope.Resolve<IConfigReader>();
}
However in MVC 5 replace Step 4 with this:
var mvcResolver = new AutofacDependencyResolver(container);
DependencyResolver.SetResolver(mvcResolver);
Registering Types
Here are a few key examples of registering types.
Case 1: Instance on Request:
builder.RegisterType<SystemDistanceCalculator>().
As<ISystemDistanceCalculator>().
InstancePerRequest();
Case 2: A singleton instance
builder.RegisterType<SystemIdsCachesManager>().
As<ISystemIdsCachesManager>().
SingleInstance();
Case 3: Initializing Parameters Example
builder.RegisterType<PermitSystemsFactory>().
As<IPermitSystemsFactory>().
WithParameter("repositoryPath", EliteDangerousPaths.PermitSystemsJsonlPath).
SingleInstance();
Case 4: Using a lambda to perform some of the object initialization
builder.Register(c =>
{
var edSystemsDb = new EdSystemsSqlDb();
var sqlServerConfig = c.Resolve<ISqlServerConfiguration>();
edSystemsDb.Initialise(sqlServerConfig.ConnectionString);
return edSystemsDb;
}).
As<IEdSystemsDb>().
SingleInstance();
No comments:
Post a Comment