private static string LoadTypeTable() { var res = new Dictionary <string, string>(StringComparer.Ordinal); TypeCacheUtils.LoadClientTypeMetadataTable(); foreach (var item in TypeCacheUtils.ClientSideMappingInfo) { res.Add(item.Value + "", item.Key.FullName.Replace('.', '_')); } var serializer = new Newtonsoft.Json.JsonSerializer(); var result = new Result() { DefaultsAndAlias = TypeCacheUtils.DefaultAndAliasMappings, TypesInfo = res }; var stringWriter = new System.IO.StringWriter(); serializer.Serialize(stringWriter, result); var typeInfoTable = stringWriter.ToString(); return(typeInfoTable); }
/// <summary> /// Performs several initialization tasks, related to the IoCContainer setup /// All types are registered here for interception. /// </summary> /// <returns></returns> public static void Initialize(Assembly mainAssembly = null) { //System.Web.HttpContext.Current.ApplicationInstance.BeginRequest -= ApplicationInstance_BeginRequest; //System.Web.HttpContext.Current.ApplicationInstance.BeginRequest += ApplicationInstance_BeginRequest; if (initialized) { return; } Debug.WriteLine("WebMap Application not initialized. Starting initialization"); TypePropertiesCache.SetupInterceptionDelegates( new InterceptionDelegates() { isASupportedValueTypeForIListDelegate = TypeCacheUtils.IsSupportedGenericTypeForList, ProcessGetterNoAction = LazyBehaviours.ProcessGetterNoAction, ProcessGetterNonTopLevelIStateObject = LazyBehaviours.ProcessGetterNonTopLevelIStateObject, ProcessGetterStrongReference = LazyBehaviours.ProcessGetterStrongReference, ProcessGetterSurrogate = LazyBehaviours.ProcessGetterSurrogate, ProcessGetterTopLevelIStateObject = LazyBehaviours.ProcessGetterTopLevelIStateObject, ProcessGetterWeakReference = LazyBehaviours.ProcessGetterWeakReference, ProcessSetterMostCases = LazyBehaviours.ProcessSetterMostCases, ProcessSetterObjectReference = LazyBehaviours.ProcessSetterObjectReference, ProcessSetterSimpleTypes = LazyBehaviours.ProcessSetterSimpleTypes, ProcessSetterStrongReference = LazyBehaviours.ProcessSetterStrongReference, ProcessSetterSurrogate = LazyBehaviours.ProcessSetterSurrogate, ProcessSetterWeakReference = LazyBehaviours.ProcessSetterWeakReference, ProcessSetterVisibleState = LazyBehaviours.ProcessSetterVisibleState }); SurrogatesDirectory.TypeToContractedString = TypeCacheUtils.AssemblyQualifiedNameCache; SurrogatesDirectory.ContractedStringToType = TypeCacheUtils.GetType; var aliasConfig = System.Configuration.ConfigurationManager.AppSettings["UniqueIDAliasEnabled"]; var aliasEnabled = false; if (aliasConfig != null) { aliasEnabled = Convert.ToBoolean(aliasConfig); } TypePropertiesCache.ALIAS_ENABLED = aliasEnabled; //Connect delegates that are required by Dictionary implementations DictionaryUtils.Current = StateManager.GetCurrent; DictionaryUtils.CreatePromise = EventPromiseInfo.CreateEventInstancePromise; DictionaryUtils.RetrieveDelegateFromPromise = PromiseUtils.RetrieveDelegateFromPromise; DictionaryUtils.GetObjectContainingMethod = EventPromiseInfo.GetObjectContainingMethod; MEFManager.PlatformInitializer().Initialize(); BaseClassFindInit._findMethod = (_baseType, parameters, types) => { Type[] paramsTypes = new Type[] { }; if (types != null) { paramsTypes = types; } var initCandidates = new List <MethodInfo>(); var methods = _baseType.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); foreach (var methodInfo in methods) { if (InitializationHelpers.IsMethodValidCandidate(methodInfo, paramsTypes)) //explicit interface implementation { initCandidates.Add(methodInfo); } } var selectedInit = InitializationHelpers.GetSelectedInit(initCandidates, paramsTypes); return(selectedInit); }; IocContainerImplWithUnity.InitializeResolver(); var container = IocContainerImplWithUnity.Current; RegisterAllTypes(container, mainAssembly); TypeCacheUtils.LoadClientTypeMetadataTable(); initialized = true; Debug.WriteLine("WebMap Runtime Initialization DONE!"); }