Skip to content

Instantly share code, notes, and snippets.

@melvinlee
Last active September 10, 2015 10:06
Show Gist options
  • Save melvinlee/f8c639eb40e23a1f75be to your computer and use it in GitHub Desktop.
Save melvinlee/f8c639eb40e23a1f75be to your computer and use it in GitHub Desktop.
ASP.NET MVC Autofac registration.
internal class DependencyConfigure
{
public static void Initialize()
{
var builder = new ContainerBuilder();
DependencyResolver.SetResolver(new AutofacDependencyResolver(RegisterServices(builder)));
}
private static IContainer RegisterServices(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(typeof(MvcApplication).Assembly).PropertiesAutowired();
//deal with your dependencies here
builder.RegisterType<DataContext>().As<IDbContext>().InstancePerHttpRequest();
builder.RegisterAssemblyTypes(Assembly.Load("OWDN"));
builder.Register(c => new SmdrNativeRepository(() => new SqlConnection( ConnectionSetting.SmdrConnectionString)));
builder.Register(c => new CallsNativeRepository(() => new SqlConnection(ConnectionSetting.ConnectionString)));
builder.RegisterAssemblyTypes(Assembly.Load("OWD"));
builder.RegisterAssemblyTypes(Assembly.Load("OWD")).Where(t => t.Name.Contains("Repository")).AsImplementedInterfaces();
// scan and register IReport implementations as Named services
builder.RegisterAssemblyTypes(typeof(MvcApplication).Assembly).Where(t => t.IsAssignableTo<IReport>()).Named<IReport>(x => x.Name).AsImplementedInterfaces().InstancePerLifetimeScope();
var container = builder.Build();
var postContainerBuilder = new ContainerBuilder();
postContainerBuilder.Register(c => container);
postContainerBuilder.Update(container);
return container;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment