Add AutoFac to the MVC sample

This commit is contained in:
Yishai Galatzer 2014-06-09 14:56:40 -07:00
parent 0123b38840
commit 95aa6ad607
4 changed files with 56 additions and 7 deletions

View File

@ -0,0 +1,3 @@
{
"DependencyInjection": "AutoFac"
}

View File

@ -23,6 +23,7 @@
<DevelopmentServerPort>42750</DevelopmentServerPort> <DevelopmentServerPort>42750</DevelopmentServerPort>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Content Include="App_Data\Config.json" />
<Content Include="Areas\Travel\Views\Flight\Fly.cshtml" /> <Content Include="Areas\Travel\Views\Flight\Fly.cshtml" />
<Content Include="Content\bootstrap.min.css" /> <Content Include="Content\bootstrap.min.css" />
<Content Include="project.json" /> <Content Include="project.json" />

View File

@ -1,24 +1,65 @@
using Microsoft.AspNet; using System;
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.DependencyInjection;
using MvcSample.Web.Filters; using MvcSample.Web.Filters;
using MvcSample.Web.Services; using MvcSample.Web.Services;
#if NET45
using Autofac;
using Microsoft.Framework.DependencyInjection.Autofac;
using Microsoft.Framework.ConfigurationModel;
using Microsoft.Framework.OptionsModel;
#endif
namespace MvcSample.Web namespace MvcSample.Web
{ {
public class Startup public class Startup
{ {
public void Configure(IBuilder app) public void Configure(IBuilder app)
{ {
app.UseServices(services => #if NET45
var configuration = new Configuration()
.AddJsonFile(@"App_Data\config.json")
.AddEnvironmentVariables();
string diSystem;
if (configuration.TryGet("DependencyInjection", out diSystem) &&
diSystem.Equals("AutoFac", StringComparison.OrdinalIgnoreCase))
{ {
var services = new ServiceCollection();
services.AddMvc(); services.AddMvc();
services.AddSingleton<PassThroughAttribute>(); services.AddSingleton<PassThroughAttribute>();
services.AddSingleton<UserNameService>(); services.AddSingleton<UserNameService>();
services.AddTransient<ITestService, TestService>(); services.AddTransient<ITestService, TestService>();
}); services.Add(OptionsServices.GetDefaultServices());
// Create the autofac container
ContainerBuilder builder = new ContainerBuilder();
// Create the container and use the default application services as a fallback
AutofacRegistration.Populate(
builder,
services,
fallbackServiceProvider: app.ApplicationServices);
IContainer container = builder.Build();
app.UseServices(container.Resolve<IServiceProvider>());
}
else
#endif
{
app.UseServices(services =>
{
services.AddMvc();
services.AddSingleton<PassThroughAttribute>();
services.AddSingleton<UserNameService>();
services.AddTransient<ITestService, TestService>();
});
}
app.UseMvc(routes => app.UseMvc(routes =>
{ {

View File

@ -14,13 +14,17 @@
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-*", "Microsoft.AspNet.Server.WebListener": "0.1-alpha-*",
"Microsoft.DataAnnotations": "0.1-alpha-*", "Microsoft.DataAnnotations": "0.1-alpha-*",
"Microsoft.Framework.ConfigurationModel": "0.1-alpha-*", "Microsoft.Framework.ConfigurationModel": "0.1-alpha-*",
"Microsoft.Framework.DependencyInjection": "0.1-alpha-*" "Microsoft.Framework.DependencyInjection": "0.1-alpha-*",
"Microsoft.Framework.OptionsModel": "0.1-alpha-*"
}, },
"commands": { "web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001" }, "commands": { "web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001" },
"configurations": { "configurations": {
"net45": { "net45": {
"dependencies": { "dependencies": {
"System.ComponentModel.DataAnnotations": "" "System.ComponentModel.DataAnnotations": "",
"Microsoft.Framework.DependencyInjection.Autofac": "0.1-alpha-*",
"Microsoft.Framework.ConfigurationModel.Json": "0.1-alpha-*",
"Autofac": "3.3.0"
} }
}, },
"k10": { "k10": {