MongoServices 0.2.0
A Service/Repository Framework for mongoDB
C:/Development/MongoServices/Source/MongoServices/Configuration/MongoServicesConfig.cs
Go to the documentation of this file.
00001 using System;
00002 using System.Collections.Generic;
00003 using System.Linq;
00004 using System.Text;
00005 using System.Reflection;
00006 using MongoDB.Driver;
00007 
00008 namespace MongoServices
00009 {
00013         public static class MongoServicesConfig
00014         {
00015                 private static Action<Assembly, Type, List<Type>> getTypes = (assembly, type, list) => {
00016                         list.AddRange(assembly.GetTypes().Where(t => type.IsAssignableFrom(t)  && t.IsClass));
00017                 };
00018 
00024                 public static void Initialize()
00025                 {
00026                         var assemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
00027 
00028                         InitializeServiceConfig(assemblies);
00029                         InitializeRepositoryConfig(assemblies);
00030                         InitializeModelConfig(assemblies);
00031                 }
00032 
00033                 private static void InitializeModelConfig(List<Assembly> assemblies)
00034                 {
00035                         var types = new List<Type>();
00036 
00037                         assemblies.ForEach(a => getTypes(a, typeof(IMongoServicesModelInitializer), types));
00038 
00039                         foreach (var t in types)
00040                         {
00041                                 ((IMongoServicesModelInitializer)Activator.CreateInstance(t)).Setup();
00042                         }
00043                 }
00044 
00045                 private static void InitializeRepositoryConfig(List<Assembly> assemblies)
00046                 {
00047                         var types = new List<Type>();
00048 
00049                         assemblies.ForEach(a => getTypes(a, typeof(IMongoServicesRepositoryInitializer), types));
00050 
00051                         foreach (var t in types)
00052                         {
00053                                 ((IMongoServicesRepositoryInitializer)Activator.CreateInstance(t)).Setup();
00054                         }
00055                 }
00056 
00057                 private static void InitializeServiceConfig(List<Assembly> assemblies)
00058                 {
00059                         var types = new List<Type>();
00060 
00061                         assemblies.ForEach(a => getTypes(a, typeof(IMongoServicesServiceInitializer), types));
00062 
00063                         foreach (var t in types)
00064                         {
00065                                 ((IMongoServicesServiceInitializer)Activator.CreateInstance(t)).Setup();
00066                         }
00067                 }
00068 
00073                 public static void SetMongoUrlProvider(Func<MongoUrl> provider)
00074                 {
00075                         GlobalConfigContainer.Instance.MongoUrlProvider = provider;
00076                 }
00077         }
00078 }
 All Classes Namespaces Files Functions Enumerations Properties