如何改变通过反思得到的财产价值C#

时间:2015-05-21 13:19:17

标签: c# .net dynamic reflection

我有一个有按钮类的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

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

1 个答案:

答案 0 :(得分:0)

试试这个:

dynamic playButton = FooInstance.playButton;

playButton.Image = (Image)pauseBitmap;