root / trunk / Pithos.Client / IoC.cs @ 7e0e06d0
History | View | Annotate | Download (1.4 kB)
1 |
using System; |
---|---|
2 |
using System.ComponentModel.Composition.Hosting; |
3 |
using System.Diagnostics; |
4 |
using System.IO; |
5 |
using System.Linq; |
6 |
using System.Reflection; |
7 |
using System.ComponentModel.Composition; |
8 |
using Pithos.Core; |
9 |
|
10 |
namespace Pithos.Client |
11 |
{ |
12 |
public class IoC |
13 |
{ |
14 |
public CompositionContainer Container; |
15 |
|
16 |
static readonly Lazy<IoC> Instance=new Lazy<IoC>(); |
17 |
|
18 |
public static IoC Current |
19 |
{ |
20 |
get { return Instance.Value; } |
21 |
} |
22 |
|
23 |
public IoC() |
24 |
{ |
25 |
var catalog = new AggregateCatalog(); |
26 |
var executingAssembly = Assembly.GetExecutingAssembly(); |
27 |
catalog.Catalogs.Add(new AssemblyCatalog(executingAssembly)); |
28 |
|
29 |
Type[] types = {typeof (PithosMonitor), typeof (Pithos.Network.CloudFilesClient)}; |
30 |
foreach (var type in types) |
31 |
{ |
32 |
catalog.Catalogs.Add(new AssemblyCatalog(type.Assembly)); |
33 |
} |
34 |
|
35 |
|
36 |
|
37 |
Container=new CompositionContainer(catalog); |
38 |
} |
39 |
|
40 |
|
41 |
|
42 |
public T Compose<T>(T target) |
43 |
{ |
44 |
try |
45 |
{ |
46 |
Container.ComposeParts(target); |
47 |
return target; |
48 |
} |
49 |
catch (Exception exc) |
50 |
{ |
51 |
Trace.TraceError(exc.ToString()); |
52 |
throw; |
53 |
} |
54 |
} |
55 |
} |
56 |
} |