コード例 #1
0
        /// <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);
            }
        }
コード例 #3
0
        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);
        }