/// <summary> /// Deserializes stored data /// </summary> /// <param name="doInParaller">if set to <c>true</c> [do in paraller].</param> /// <returns></returns> protected Dictionary <String, T> GetDataItems(Boolean doInParaller = true) { aceConcurrentBag <instanceItemContainer <T> > bag = new aceConcurrentBag <instanceItemContainer <T> >(); Dictionary <String, T> output = new Dictionary <String, T>(); if (doInParaller) { Parallel.ForEach(bagContent, (i) => { bag.Add(GetItem(i)); }); } else { foreach (var i in bagContent) { bag.Add(GetItem(i)); } } foreach (var i in bag) { output.Add(i.id, i.instance); if (i.instance is IDataPackageItem) { IDataPackageItem item_IDataPackageItem = (IDataPackageItem)i.instance; item_IDataPackageItem.OnLoaded(); } } return(output); }
#pragma warning disable CS1574 // XML comment has cref attribute 'content' that could not be resolved /// <summary> /// Serializes and stores an item into <see cref="content"/> collection. , before serialization it calls <see cref="IDataPackageItem.OnBeforeSave"/> /// </summary> /// <param name="wrapper">The wrapper to use for <see cref="dataItemContainer.id"/> and <see cref="dataItemContainer.instanceXml"/> creation</param> /// <param name="xmlSer">The XML serializer to use instead of its own.</param> /// <remarks>Makes the container using <see cref="GetInstanceToPack(TWrapper)"/> and <see cref="GetDataPackageID(TWrapper)"/>. Calls <see cref="IDataPackageItem.OnBeforeSave"/> between these two.</remarks> /// <returns></returns> protected virtual dataItemContainer AddDataItem(TWrapper wrapper, XmlSerializer xmlSer = null) #pragma warning restore CS1574 // XML comment has cref attribute 'content' that could not be resolved { dataItemContainer iContainer = new dataItemContainer(); T item = GetInstanceToPack(wrapper); if (item is IDataPackageItem) { IDataPackageItem item_IDataPackageItem = (IDataPackageItem)item; item_IDataPackageItem.OnBeforeSave(); } iContainer.id = GetDataPackageID(wrapper); TextWriter writer = new StringWriter(); if (xmlSer == null) { xmlSer = xSer; } xmlSer.Serialize(writer, item); writer.Close(); iContainer.instanceXml = writer.ToString(); content.Add(iContainer); return(iContainer); }