如何通过反思C#改变属性值#

Ole*_*bra 5 .net c# reflection dynamic

我有一个按钮类的DLL.它看起来像那样:

internal class CoolButton12345: UserControl
{
  all fields, properties and methods...
  public Image Image{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此按钮属性值更改为我自己的值.

dynamic playButton = typeof (FooDll).Assembly.GetType("ClassWhichHasThisButton")
                .GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
                .FirstOrDefault(x => x.Name == "playButton").GetValue(FooInstance.Controls[0]);
playButton.Image = (Image)pauseBitmap;
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

System.Core.dll中发生未处理的"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"类型异常

为什么我的方法错了?请告诉我,我可以这样做吗?如果我能帮忙找到如何做到这一点的方式.

T M*_*own 0

尝试这个:

dynamic playButton = FooInstance.playButton;

playButton.Image = (Image)pauseBitmap;
Run Code Online (Sandbox Code Playgroud)