MongoServices 0.2.0
A Service/Repository Framework for mongoDB
|
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 }