/// <summary> Ensure object is ready for serialization, and calls <see cref="IHostingService.OnBeforeSerialize"/> methods /// on all managed <see cref="IHostingService"/> instances /// </summary> public void OnAfterDeserialize() { m_HostingServiceInfoMap = new Dictionary <IHostingService, HostingServiceInfo>(); foreach (var svcInfo in m_HostingServiceInfos) { IHostingService svc = CreateHostingServiceInstance(svcInfo.classRef); if (svc == null) { continue; } svc.OnAfterDeserialize(svcInfo.dataStore); m_HostingServiceInfoMap.Add(svc, svcInfo); } m_RegisteredServiceTypes = new List <Type>(); foreach (var typeRef in m_RegisteredServiceTypeRefs) { var type = Type.GetType(typeRef, false); if (type == null) { continue; } m_RegisteredServiceTypes.Add(type); } }
/// <inheritdoc/> /// <summary> Ensure object is ready for serialization, and calls <see cref="IHostingService.OnBeforeSerialize"/> methods /// on all managed <see cref="IHostingService"/> instances /// </summary> public void OnAfterDeserialize() { m_HostingServiceInfoMap = new Dictionary <IHostingService, HostingServiceInfo>(); foreach (var svcInfo in m_HostingServiceInfos) { IHostingService svc = null; var id = svcInfo.dataStore.GetData(BaseHostingService.k_InstanceIdKey, -1); if (id == -1 || !s_HostingServicesCache.ContainsKey(id) || !s_HostingServicesCache[id].TryGetTarget(out svc)) { svc = CreateHostingServiceInstance(svcInfo.classRef); } if (svc == null) { continue; } svc.OnAfterDeserialize(svcInfo.dataStore); m_HostingServiceInfoMap.Add(svc, svcInfo); s_HostingServicesCache[svc.InstanceId] = new WeakReference <IHostingService>(svc); } m_RegisteredServiceTypes = new List <Type>(); foreach (var typeRef in m_RegisteredServiceTypeRefs) { var type = Type.GetType(typeRef, false); if (type == null) { continue; } m_RegisteredServiceTypes.Add(type); } }
public void OnAfterDeserializeShould_RestoreExpectedDataFromKeyDataStore() { var data = new KeyDataStore(); data.SetData("DescriptiveName", "Testing 123"); data.SetData("InstanceId", 123); data.SetData("ContentRoot", "/test123;/test456"); m_Service.OnAfterDeserialize(data); Assert.AreEqual("Testing 123", m_Service.DescriptiveName); Assert.AreEqual(123, m_Service.InstanceId); Assert.Contains("/test123", m_Service.HostingServiceContentRoots); Assert.Contains("/test456", m_Service.HostingServiceContentRoots); }