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