Skip to content

Commit

Permalink
Merge pull request #5313 from jp2masa/static-method-to-command
Browse files Browse the repository at this point in the history
Fixed static method to command conversion
  • Loading branch information
Dan Walmsley committed Jan 21, 2021
2 parents f87464e + 2ffe89d commit 15c175e
Showing 1 changed file with 7 additions and 18 deletions.
25 changes: 7 additions & 18 deletions src/Avalonia.Base/Data/Converters/MethodToCommandConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public MethodToCommandConverter(Delegate action)
}
}

void OnPropertyChanged(object sender,PropertyChangedEventArgs args)
void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (string.IsNullOrWhiteSpace(args.PropertyName)
|| dependencyProperties?.Contains(args.PropertyName) == true)
Expand All @@ -88,12 +88,7 @@ void OnPropertyChanged(object sender,PropertyChangedEventArgs args)

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
(
Expand All @@ -114,11 +109,7 @@ void OnPropertyChanged(object sender,PropertyChangedEventArgs args)

var parameter = Expression.Parameter(typeof(object), "parameter");

var instance = Expression.Convert
(
Expression.Constant(target),
method.DeclaringType
);
var instance = ConvertTarget(target, method);

Expression body;

Expand Down Expand Up @@ -167,11 +158,7 @@ void OnPropertyChanged(object sender,PropertyChangedEventArgs args)
, 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,
Expand All @@ -183,6 +170,8 @@ void OnPropertyChanged(object sender,PropertyChangedEventArgs args)
.Compile();
}

private static Expression? ConvertTarget(object? target, MethodInfo method) =>
target is null ? null : Expression.Convert(Expression.Constant(target), method.DeclaringType);

internal class WeakPropertyChangedProxy
{
Expand Down Expand Up @@ -224,7 +213,7 @@ void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
else
Unsubscribe();
}

}
}
}

0 comments on commit 15c175e

Please sign in to comment.