Skip to content

Commit ae6e7d5

Browse files
authored
MessageComponent: Add better json type exception (#3176)
Currently in MessageComponentConverter, the error on unknown type is System.ArgumentNullException: Value cannot be null. (Parameter 'target') This is because PopulateObject() doesn't allow a null target, but we don't have a default case on the switch statement.
1 parent ebc7db8 commit ae6e7d5

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/Discord.Net.Rest/Net/Converters/MessageComponentConverter.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Newtonsoft.Json;
22
using Newtonsoft.Json.Linq;
33
using System;
4-
using System.ComponentModel;
54

65
namespace Discord.Net.Converters
76
{
@@ -21,8 +20,10 @@ public override void WriteJson(JsonWriter writer,
2120
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
2221
{
2322
var jsonObject = JObject.Load(reader);
24-
var messageComponent = default(IMessageComponent);
25-
switch ((ComponentType)jsonObject["type"].Value<int>())
23+
var typeProperty = jsonObject["type"].Value<int>();
24+
25+
IMessageComponent messageComponent;
26+
switch ((ComponentType)typeProperty)
2627
{
2728
case ComponentType.ActionRow:
2829
messageComponent = new API.ActionRowComponent();
@@ -61,6 +62,8 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
6162
case ComponentType.Container:
6263
messageComponent = new API.ContainerComponent();
6364
break;
65+
default:
66+
throw new JsonSerializationException($"Unknown component type value '{typeProperty}' while deserializing message component");
6467
}
6568
serializer.Populate(jsonObject.CreateReader(), messageComponent);
6669
return messageComponent;

0 commit comments

Comments
 (0)