Browse Source

Merge pull request #11654 from grifsun/master

Fix expression in CreateGetter
pull/11805/head
Max Katz 3 years ago
committed by GitHub
parent
commit
07c154d369
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs
  2. 24
      tests/Avalonia.Base.UnitTests/Data/ReflectionClrPropertyInfoTests.cs

3
src/Avalonia.Base/Data/Core/ClrPropertyInfo.cs

@ -60,7 +60,8 @@ namespace Avalonia.Data.Core
var target = Expression.Parameter(typeof(object), "target");
return Expression.Lambda<Func<object, object>>(
Expression.Convert(Expression.Call(Expression.Convert(target, info.DeclaringType!), info.GetMethod),
typeof(object)))
typeof(object)),
target)
.Compile();
}

24
tests/Avalonia.Base.UnitTests/Data/ReflectionClrPropertyInfoTests.cs

@ -0,0 +1,24 @@
using Avalonia.Data.Core;
using Xunit;
namespace Avalonia.Base.UnitTests.Data;
public class ReflectionClrPropertyInfoTests
{
public class TestClass
{
public string Test { get; set; }
}
[Fact]
public void Can_Compile()
{
var propertyInfo = new ReflectionClrPropertyInfo(
typeof(TestClass).GetProperty(nameof(TestClass.Test))!);
var target = new TestClass();
const string result = "qwerty";
propertyInfo.Set(target, result);
Assert.Equal(result, target.Test);
Assert.Equal(result, (string)propertyInfo.Get(target));
}
}
Loading…
Cancel
Save