Add ObjectPoolContainerSerializer

master
Harald Wolff 2020-02-24 17:41:17 +01:00
parent 2e6e0094ac
commit 53d1138cb9
2 changed files with 51 additions and 0 deletions

View File

@ -56,10 +56,12 @@
<Compile Include="mapping\JSONDictionaryMapping.cs" />
<Compile Include="mapping\JSONExceptionMapping.cs" />
<Compile Include="mapping\JSONIPv6Mapping.cs" />
<Compile Include="reflection\ObjectPoolContainerSerializer.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="mapping\" />
<Folder Include="attributes\" />
<Folder Include="reflection\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ln.types\ln.types.csproj">

View File

@ -0,0 +1,49 @@
using System;
using ln.types.reflection;
using ln.json.mapping;
namespace ln.json.reflection
{
public class ObjectPoolContainerSerializer
{
public ObjectPoolContainer ObjectPoolContainer { get; }
public ObjectPoolContainerSerializer(ObjectPoolContainer objectPoolContainer)
{
ObjectPoolContainer = objectPoolContainer;
}
public JSONObject Serialize()
{
JSONObject serializedPoolContainer = new JSONObject();
foreach (ObjectPool objectPool in ObjectPoolContainer.Pools)
{
JSONArray objectList = new JSONArray();
foreach (object o in objectPool.Instances)
{
objectList.Add(JSONMapper.DefaultMapper.ToJson(o));
}
serializedPoolContainer.Add(objectPool.ObjectType.Name, objectList);
}
return serializedPoolContainer;
}
public void Unserialize(JSONObject serializedPoolContainer)
{
foreach (ObjectPool objectPool in ObjectPoolContainer.Pools)
{
if (serializedPoolContainer.ContainsKey(objectPool.ObjectType.Name))
{
JSONArray serializedObjects = serializedPoolContainer[objectPool.ObjectType.Name] as JSONArray;
foreach (JSONObject serializedObject in serializedObjects.Children)
{
objectPool.Add(JSONMapper.DefaultMapper.FromJson(serializedObject, objectPool.ObjectType));
}
}
}
}
}
}