Skip to content

Commit bf6c435

Browse files
committed
Use base class for dotnet enums to improve converter performance
1 parent 7716e90 commit bf6c435

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

src/SDK/Language/DotNet.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,11 @@ public function getFiles(): array
402402
'scope' => 'enum',
403403
'destination' => '/src/{{ spec.title | caseUcfirst }}/Enums/{{ enum.name | caseUcfirst | overrideIdentifier }}.cs',
404404
'template' => 'dotnet/src/Appwrite/Enums/Enum.cs.twig',
405+
],
406+
[
407+
'scope' => 'default',
408+
'destination' => '/src/{{ spec.title | caseUcfirst }}/Enums/IEnum.cs',
409+
'template' => 'dotnet/src/Appwrite/Enums/IEnum.cs.twig',
405410
]
406411
];
407412
}

templates/dotnet/src/Appwrite/Converters/ValueClassConverter.cs.twig

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@ namespace {{ spec.title | caseUcfirst }}.Converters
88

99
public override bool CanConvert(Type objectType)
1010
{
11-
return
12-
{%~ for enum in spec.enums %}
13-
typeof({{ enum | caseUcfirst }}).IsAssignableFrom(objectType){% if not loop.last %} ||{% else %};{% endif %}
14-
15-
{%~ endfor %}
11+
return typeof(IEnum).IsAssignableFrom(objectType);
1612
}
1713

1814
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
@@ -27,7 +23,7 @@ namespace {{ spec.title | caseUcfirst }}.Converters
2723
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
2824
{
2925
var type = value.GetType();
30-
var property = type.GetProperty("Value");
26+
var property = type.GetProperty(nameof(IEnum.Value));
3127
var propertyValue = property.GetValue(value);
3228

3329
if (propertyValue == null)

templates/dotnet/src/Appwrite/Enums/Enum.cs.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using System;
22

33
namespace {{ spec.title | caseUcfirst }}.Enums
44
{
5-
public class {{ enum.name | caseUcfirst | overrideIdentifier }}
5+
public class {{ enum.name | caseUcfirst | overrideIdentifier }} : IEnum
66
{
77
public string Value { get; private set; }
88

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using System;
2+
3+
namespace {{ spec.title | caseUcfirst }}.Enums
4+
{
5+
public interface IEnum
6+
{
7+
public string Value { get; }
8+
}
9+
}

0 commit comments

Comments
 (0)