Datei: NDO.Mapping/NDO.Mapping/Serialization/SerializationExtensions.cs

Last Commit (a5a7f46)
1 -- File didn't exist --
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
New Commit (b74c314)
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Text.Json;
5 using System.Text.Json.Nodes;
6
7 namespace NDO.Mapping.Serialization
8 {
9 ····/// <summary>
10 ····/// Extension class to convert attribute instances to the correct type.
11 ····/// </summary>
12 ····public static class SerializationExtensions
13 ····{
14 ········/// <summary>
15 ········/// Serializes an object which should be an NDORelationAttribute
16 ········/// </summary>
17 ········/// <param name="attr"></param>
18 ········/// <returns></returns>
19 ········public static string Serialize( this object attr )
20 ········{
21 ············if (attr.GetType().Name != "NDORelationAttribute")
22 ················throw new ArgumentException( "Wrong parameter type", "attr" );
23
24 ············var d = (dynamic)attr;
25 ············string rt = null;
26 ············if (d.RelationType != null)
27 ················rt = d.RelationType.FullName;
28 ············return JsonSerializer.Serialize( new { FullName = rt, d.Info, d.RelationName } );
29 ········}
30
31 ········/// <summary>
32 ········/// Converts an attribute object to the correct type
33 ········/// </summary>
34 ········/// <param name="attr"></param>
35 ········/// <returns></returns>
36 ········public static NDORelationAttribute ConvertToNdoRelation( this object attr )
37 ········{
38 ············var json = Serialize(attr);
39 ············var obj = JsonSerializer.Deserialize<JsonObject>(json);
40 ············var rt = (string)obj["FullName"];
41 ············Type relationType = null;
42 ············if (rt != null)
43 ················relationType = Type.GetType( rt );
44 ············return new NDORelationAttribute( relationType, (RelationInfo) (int) obj["Info"], (string) obj["RelationName"] );
45 ········}
46 ····}
47 }
48