forked from matthewDDennis/Performance
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAutofacUseCase.cs
52 lines (43 loc) · 1.1 KB
/
AutofacUseCase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using Autofac;
using Domain;
namespace Performance
{
[System.ComponentModel.Description("Autofac")]
public class AutofacUseCase : UseCase
{
static IContainer container;
static AutofacUseCase()
{
var builder = new ContainerBuilder();
builder.Register<IWebService>(
c => new WebService(
c.Resolve<IAuthenticator>(),
c.Resolve<IStockQuote>()));
builder.Register<IAuthenticator>(
c => new Authenticator(
c.Resolve<ILogger>(),
c.Resolve<IErrorHandler>(),
c.Resolve<IDatabase>()));
builder.Register<IStockQuote>(
c => new StockQuote(
c.Resolve<ILogger>(),
c.Resolve<IErrorHandler>(),
c.Resolve<IDatabase>()));
builder.Register<IDatabase>(
c => new Database(
c.Resolve<ILogger>(),
c.Resolve<IErrorHandler>()));
builder.Register<IErrorHandler>(
c => new ErrorHandler(c.Resolve<ILogger>()));
builder.Register<ILogger>(c => new Logger())
.SingleInstance();
container = builder.Build();
}
public override void Run()
{
var webApp = container.Resolve<IWebService>();
webApp.Execute();
}
}
}