@@ -39,7 +39,19 @@ public Task Serialize(IRelationshipObject relationshipObject, JsonWriter writer)
3939 LinksKeyName , LinkageKeyName , MetaKeyName ) ) ;
4040
4141 writer . WriteStartObject ( ) ;
42+ SerializeLinks ( relationshipObject , writer ) ;
43+ SerializeLinkage ( relationshipObject , writer ) ;
44+ SerializeMetadata ( relationshipObject , writer ) ;
45+ writer . WriteEndObject ( ) ;
4246
47+ return Task . FromResult ( 0 ) ;
48+ }
49+
50+ /// <summary>
51+ /// Serializes the relationship object's links.
52+ /// </summary>
53+ protected virtual void SerializeLinks ( IRelationshipObject relationshipObject , JsonWriter writer )
54+ {
4355 if ( relationshipObject . SelfLink != null || relationshipObject . RelatedResourceLink != null )
4456 {
4557 writer . WritePropertyName ( LinksKeyName ) ;
@@ -58,22 +70,30 @@ public Task Serialize(IRelationshipObject relationshipObject, JsonWriter writer)
5870
5971 writer . WriteEndObject ( ) ;
6072 }
73+ }
6174
75+ /// <summary>
76+ /// Serializes the relationship object's linkage.
77+ /// </summary>
78+ protected virtual void SerializeLinkage ( IRelationshipObject relationshipObject , JsonWriter writer )
79+ {
6280 if ( relationshipObject . Linkage != null )
6381 {
6482 writer . WritePropertyName ( LinkageKeyName ) ;
6583 _resourceLinkageFormatter . Serialize ( relationshipObject . Linkage , writer ) ;
6684 }
85+ }
6786
87+ /// <summary>
88+ /// Serializes the relationship object's metadata.
89+ /// </summary>
90+ protected virtual void SerializeMetadata ( IRelationshipObject relationshipObject , JsonWriter writer )
91+ {
6892 if ( relationshipObject . Metadata != null )
6993 {
7094 writer . WritePropertyName ( MetaKeyName ) ;
7195 _metadataFormatter . Serialize ( relationshipObject . Metadata , writer ) ;
7296 }
73-
74- writer . WriteEndObject ( ) ;
75-
76- return Task . FromResult ( 0 ) ;
7797 }
7898
7999 public async Task < IRelationshipObject > Deserialize ( JsonReader reader , string currentPath )
0 commit comments