forked from InEngine-NET/InEngine.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContainerResolver.cs
More file actions
57 lines (49 loc) · 1.32 KB
/
ContainerResolver.cs
File metadata and controls
57 lines (49 loc) · 1.32 KB
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
53
54
55
56
using System;
using System.Web.Http.Dependencies;
using Microsoft.Practices.Unity;
using System.Collections.Generic;
namespace IntegrationEngine
{
public class ContainerResolver : IDependencyResolver
{
protected IUnityContainer container;
public ContainerResolver()
{}
public ContainerResolver(IUnityContainer container) : this()
{
if (container == null)
throw new ArgumentNullException("container");
this.container = container;
}
public object GetService(Type serviceType)
{
try
{
return container.Resolve(serviceType);
}
catch (ResolutionFailedException)
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return container.ResolveAll(serviceType);
}
catch (ResolutionFailedException)
{
return new List<object>();
}
}
public IDependencyScope BeginScope()
{
return new ContainerResolver(container.CreateChildContainer());
}
public void Dispose()
{
container.Dispose();
}
}
}