diff --git a/src/Avalonia.Base/Data/Converters/MethodToCommandConverter.cs b/src/Avalonia.Base/Data/Converters/MethodToCommandConverter.cs index 7e7417d2f5..7ff0a8ceca 100644 --- a/src/Avalonia.Base/Data/Converters/MethodToCommandConverter.cs +++ b/src/Avalonia.Base/Data/Converters/MethodToCommandConverter.cs @@ -63,7 +63,7 @@ namespace Avalonia.Data.Converters } } - void OnPropertyChanged(object sender,PropertyChangedEventArgs args) + void OnPropertyChanged(object sender, PropertyChangedEventArgs args) { if (string.IsNullOrWhiteSpace(args.PropertyName) || dependencyProperties?.Contains(args.PropertyName) == true) @@ -88,12 +88,7 @@ namespace Avalonia.Data.Converters var parameter = Expression.Parameter(typeof(object), "parameter"); - var instance = Expression.Convert - ( - Expression.Constant(target), - method.DeclaringType - ); - + var instance = ConvertTarget(target, method); var call = Expression.Call ( @@ -114,11 +109,7 @@ namespace Avalonia.Data.Converters var parameter = Expression.Parameter(typeof(object), "parameter"); - var instance = Expression.Convert - ( - Expression.Constant(target), - method.DeclaringType - ); + var instance = ConvertTarget(target, method); Expression body; @@ -167,11 +158,7 @@ namespace Avalonia.Data.Converters , System.Reflection.MethodInfo method) { var parameter = Expression.Parameter(typeof(object), "parameter"); - var instance = Expression.Convert - ( - Expression.Constant(target), - method.DeclaringType - ); + var instance = ConvertTarget(target, method); var call = Expression.Call ( instance, @@ -183,6 +170,8 @@ namespace Avalonia.Data.Converters .Compile(); } + private static Expression? ConvertTarget(object? target, MethodInfo method) => + target is null ? null : Expression.Convert(Expression.Constant(target), method.DeclaringType); internal class WeakPropertyChangedProxy { @@ -224,7 +213,7 @@ namespace Avalonia.Data.Converters else Unsubscribe(); } - + } } }