Skip to content

Commit 0a03d3e

Browse files
author
Caitlin Bales (MSFT)
authored
Merge pull request #80 from microsoftgraph/caitbal/working
Replace DataMember with JsonProperty
2 parents a24a17e + 6342d1f commit 0a03d3e

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

Templates/CSharp/Model/MethodRequestBody.cs.tt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@ var requestBody = entityName + method.Name.Substring(method.Name.IndexOf('.') +
1313
// and violate the spec.
1414
System.Diagnostics.Debug.Assert(!method.Overloads.Any(), "Overload actions are not allowed in OData services");
1515

16+
var attributeStringBuilder = new StringBuilder();
17+
attributeStringBuilder.Append("[JsonObject(MemberSerialization = MemberSerialization.OptIn)]");
1618
#>
1719

1820
namespace <#=method.Namespace.GetNamespaceName()#>
1921
{
22+
using Newtonsoft.Json;
2023
using System;
2124
using System.Collections.Generic;
2225
using System.IO;
@@ -25,7 +28,7 @@ namespace <#=method.Namespace.GetNamespaceName()#>
2528
/// <summary>
2629
/// The type <#=requestBody#>.
2730
/// </summary>
28-
[DataContract]
31+
<#=attributeStringBuilder.ToString()#>
2932
public partial class <#=requestBody#>
3033
{
3134
<#
@@ -43,12 +46,13 @@ namespace <#=method.Namespace.GetNamespaceName()#>
4346
}
4447

4548
var paramName = param.Name.ToCheckedCase().GetSanitizedPropertyName();
49+
var attributeDefinition = string.Format("[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = \"{0}\", Required = Required.Default)]", param.Name);
4650
#>
4751

4852
/// <summary>
4953
/// Gets or sets <#=paramName#>.
5054
/// </summary>
51-
[DataMember(Name = "<#=param.Name#>", EmitDefaultValue = false, IsRequired = false)]
55+
<#=attributeDefinition#>
5256
public <#=paramTypeString#> <#=paramName#> { get; set; }
5357
<#
5458
}

Templates/CSharp/Requests/EntityCollectionResponse.cs.tt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,19 @@ namespace <#=prop.Class.AsOdcmClass().Namespace.GetNamespaceName()#>
1919
/// <summary>
2020
/// The type <#=collectionResponse#>.
2121
/// </summary>
22-
[DataContract]
22+
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
23+
<#
24+
// We only want to add the derived type converter to the classes at the top of the inheritance hierarchy
25+
if (prop.Class.Derived != null && prop.Class.Base == null)
26+
{ #>
27+
[JsonConverter(typeof(DerivedTypeConverter))]
28+
<# } #>
2329
public class <#=collectionResponse#>
2430
{
2531
/// <summary>
2632
/// Gets or sets the <see cref="I<#=collectionPage#>"/> value.
2733
/// </summary>
28-
[DataMember(Name = "value", EmitDefaultValue = false, IsRequired = false)]
34+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName ="value", Required = Required.Default)]
2935
public I<#=collectionPage#> Value { get; set; }
3036

3137
/// <summary>

Templates/CSharp/Requests/EntityCollectionWithReferencesResponse.cs.tt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,19 @@ namespace <#=prop.Class.AsOdcmClass().Namespace.GetNamespaceName()#>
1919
/// <summary>
2020
/// The type <#=collectionResponse#>.
2121
/// </summary>
22-
[DataContract]
22+
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
23+
<#
24+
// We only want to add the derived type converter to the classes at the top of the inheritance hierarchy
25+
if (prop.Class.Derived != null && prop.Class.Base == null)
26+
{ #>
27+
[JsonConverter(typeof(DerivedTypeConverter))]
28+
<# } #>
2329
public class <#=collectionResponse#>
2430
{
2531
/// <summary>
2632
/// Gets or sets the <see cref="I<#=collectionPage#>"/> value.
2733
/// </summary>
28-
[DataMember(Name = "value", EmitDefaultValue = false, IsRequired = false)]
34+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName ="value", Required = Required.Default)]
2935
public I<#=collectionPage#> Value { get; set; }
3036

3137
/// <summary>

Templates/CSharp/Requests/MethodCollectionResponse.cs.tt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ namespace <#=method.Namespace.GetNamespaceName()#>
2222
/// <summary>
2323
/// The type <#=collectionResponse#>.
2424
/// </summary>
25-
[DataContract]
25+
[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
2626
public class <#=collectionResponse#>
2727
{
2828
/// <summary>
2929
/// Gets or sets the <see cref="I<#=collectionPage#>"/> value.
3030
/// </summary>
31-
[DataMember(Name = "value", EmitDefaultValue = false, IsRequired = false)]
31+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName ="value", Required = Required.Default)]
3232
public I<#=collectionPage#> Value { get; set; }
3333
<#
3434
if (isSpecialCollection)
@@ -44,7 +44,7 @@ namespace <#=method.Namespace.GetNamespaceName()#>
4444
/// <summary>
4545
/// Gets or sets the <#=propertyName#>.
4646
/// </summary>
47-
[DataMember(Name = "<#=property.Name#>", EmitDefaultValue = false, IsRequired = false)]
47+
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName ="<#=property.Name#>", Required = Required.Default)]
4848
public <#=propertyType#> <#=propertyName#> { get; set; }
4949
<#
5050
}

0 commit comments

Comments
 (0)