Skip to content

Commit 3545ebb

Browse files
authored
Merge pull request #74 from IvanMurzak/feat/null-guard-exceptions
fix: add ArgumentNullException guards to BaseReflectionConverter
2 parents 7669cfa + 1087054 commit 3545ebb

5 files changed

Lines changed: 43 additions & 2 deletions

File tree

ReflectorNet/src/Converter/Reflection/Base/BaseReflectionConverter.DefaultValue.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public abstract partial class BaseReflectionConverter<T> : IReflectionConverter
4343
/// <exception cref="ArgumentException">Thrown when type cannot be instantiated due to constructor limitations.</exception>
4444
public virtual object? CreateInstance(Reflector reflector, Type type)
4545
{
46-
if (type == null)
47-
throw new ArgumentNullException(nameof(type));
46+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
47+
if (type == null) throw new ArgumentNullException(nameof(type));
4848

4949
// Handle enums
5050
if (type.IsEnum)
@@ -155,6 +155,9 @@ public abstract partial class BaseReflectionConverter<T> : IReflectionConverter
155155
/// <returns>An appropriate default value for the specified type.</returns>
156156
public virtual object? GetDefaultValue(Reflector reflector, Type type)
157157
{
158+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
159+
if (type == null) throw new ArgumentNullException(nameof(type));
160+
158161
// Handle nullable types first
159162
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
160163
return null;

ReflectorNet/src/Converter/Reflection/Base/BaseReflectionConverter.Deserialize.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ public abstract partial class BaseReflectionConverter<T> : IReflectionConverter
5959
ILogger? logger = null,
6060
DeserializationContext? context = null)
6161
{
62+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
63+
if (data == null) throw new ArgumentNullException(nameof(data));
64+
6265
if (!TryDeserializeValue(
6366
reflector,
6467
data: data,
@@ -216,6 +219,8 @@ protected virtual bool TryDeserializeValue(
216219
Logs? logs = null,
217220
ILogger? logger = null)
218221
{
222+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
223+
219224
if (data == null)
220225
{
221226
result = null;
@@ -270,6 +275,10 @@ protected virtual bool TryDeserializeValueInternal(
270275
Logs? logs = null,
271276
ILogger? logger = null)
272277
{
278+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
279+
if (data == null) throw new ArgumentNullException(nameof(data));
280+
if (type == null) throw new ArgumentNullException(nameof(type));
281+
273282
var padding = StringUtils.GetPadding(depth);
274283

275284
if (AllowCascadeSerialization)
@@ -361,6 +370,10 @@ protected virtual bool TryDeserializeValueInternal(
361370
Logs? logs = null,
362371
ILogger? logger = null)
363372
{
373+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
374+
if (data == null) throw new ArgumentNullException(nameof(data));
375+
if (type == null) throw new ArgumentNullException(nameof(type));
376+
364377
return reflector.JsonSerializer.Deserialize(
365378
reflector,
366379
data.valueJsonElement,

ReflectorNet/src/Converter/Reflection/Base/BaseReflectionConverter.Modify.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ public virtual bool TryModify(
5757
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
5858
ILogger? logger = null)
5959
{
60+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
61+
if (data == null) throw new ArgumentNullException(nameof(data));
62+
if (type == null) throw new ArgumentNullException(nameof(type));
63+
6064
var padding = StringUtils.GetPadding(depth);
6165

6266
if (obj == null)
@@ -256,6 +260,11 @@ protected virtual bool TryModifyField(
256260
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
257261
ILogger? logger = null)
258262
{
263+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
264+
if (obj == null) throw new ArgumentNullException(nameof(obj));
265+
if (objType == null) throw new ArgumentNullException(nameof(objType));
266+
if (fieldValue == null) throw new ArgumentNullException(nameof(fieldValue));
267+
259268
var padding = StringUtils.GetPadding(depth);
260269

261270
if (string.IsNullOrEmpty(fieldValue.name))
@@ -371,6 +380,11 @@ protected virtual bool TryModifyProperty(
371380
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
372381
ILogger? logger = null)
373382
{
383+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
384+
if (obj == null) throw new ArgumentNullException(nameof(obj));
385+
if (objType == null) throw new ArgumentNullException(nameof(objType));
386+
if (propertyValue == null) throw new ArgumentNullException(nameof(propertyValue));
387+
374388
var padding = StringUtils.GetPadding(depth);
375389

376390
if (string.IsNullOrEmpty(propertyValue.name))

ReflectorNet/src/Converter/Reflection/Base/BaseReflectionConverter.Serialize.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public virtual SerializedMember Serialize(
3232
ILogger? logger = null,
3333
SerializationContext? context = null)
3434
{
35+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
36+
3537
var actualType = fallbackType ?? obj?.GetType() ?? typeof(T);
3638

3739
return InternalSerialize(
@@ -56,6 +58,9 @@ public virtual SerializedMember Serialize(
5658
ILogger? logger = null,
5759
SerializationContext? context = null)
5860
{
61+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
62+
if (obj == null) throw new ArgumentNullException(nameof(obj));
63+
5964
var serializedFields = default(SerializedMemberList);
6065
var objType = obj.GetType();
6166

@@ -116,6 +121,9 @@ public virtual SerializedMember Serialize(
116121
ILogger? logger = null,
117122
SerializationContext? context = null)
118123
{
124+
if (reflector == null) throw new ArgumentNullException(nameof(reflector));
125+
if (obj == null) throw new ArgumentNullException(nameof(obj));
126+
119127
var serializedProperties = default(SerializedMemberList);
120128
var objType = obj.GetType();
121129

ReflectorNet/src/Reflector/Reflector.Modify.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ public bool TryModify(
4343
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
4444
ILogger? logger = null)
4545
{
46+
if (data == null)
47+
throw new ArgumentNullException(nameof(data));
48+
4649
var padding = StringUtils.GetPadding(depth);
4750

4851
if (obj == null && data.IsNull())

0 commit comments

Comments
 (0)