Statistics
| Branch: | Revision:

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
}