如何更改通过反射获得的属性值



我有一个有按钮类的dll。它看起来像这样:

internal class CoolButton12345: UserControl
{
  all fields, properties and methods...
  public Image Image{get;set;}
}

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

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;

但是我得到了这个错误

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

为什么我的方法是错误的?请告诉我,我到底能不能这么做?如果我能帮助找到如何做到这一点的方法

试试这个:

dynamic playButton = FooInstance.playButton;
playButton.Image = (Image)pauseBitmap;

相关内容

  • 没有找到相关文章

最新更新