Skip to content

Commit 5044c52

Browse files
Avoid unnecessary boxing of default values
1 parent 54af995 commit 5044c52

File tree

3 files changed

+4
-10
lines changed

3 files changed

+4
-10
lines changed

src/Components/src/Microsoft.AspNetCore.Components/ParameterCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static void SetParameterProperties(
6666

6767
foreach (var nonUsedParameter in localParameterWriter)
6868
{
69-
nonUsedParameter.SetValue(target, nonUsedParameter.GetDefaultValue());
69+
nonUsedParameter.SetDefaultValue(target);
7070
}
7171
}
7272

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4-
using System;
5-
64
namespace Microsoft.AspNetCore.Components.Reflection
75
{
86
internal interface IPropertySetter
97
{
108
void SetValue(object target, object value);
119

12-
object GetDefaultValue();
10+
void SetDefaultValue(object target);
1311
}
1412
}

src/Components/src/Microsoft.AspNetCore.Components/Reflection/MemberAssignment.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,19 @@ public static IPropertySetter CreatePropertySetter(Type targetType, PropertyInfo
4343
class PropertySetter<TTarget, TValue> : IPropertySetter
4444
{
4545
private readonly Action<TTarget, TValue> _setterDelegate;
46-
private object _defaultValue;
4746

4847
public PropertySetter(MethodInfo setMethod)
4948
{
5049
_setterDelegate = (Action<TTarget, TValue>)Delegate.CreateDelegate(
5150
typeof(Action<TTarget, TValue>), setMethod);
5251
var propertyType = typeof(TValue);
53-
_defaultValue = propertyType.IsValueType ? Activator.CreateInstance(propertyType) : null;
5452
}
5553

5654
public void SetValue(object target, object value)
5755
=> _setterDelegate((TTarget)target, (TValue)value);
5856

59-
public object GetDefaultValue()
60-
{
61-
return _defaultValue;
62-
}
57+
public void SetDefaultValue(object target)
58+
=> _setterDelegate((TTarget)target, default);
6359
}
6460
}
6561
}

0 commit comments

Comments
 (0)