2015-05-21 1 views
5

Ich habe eine DLL, die eine Schaltflächenklasse hat. es sieht so ähnlich:So ändern Sie den Eigenschaftswert, der durch Reflexion erhalten wurde C#

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

Ich versuche, diese Schaltfläche Eigenschaft Wert zu meinem eigenen zu ändern.

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; 

Aber ich bin immer diesen Fehler

Eine nicht behandelte Ausnahme des Typs 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in System.Core.dll

aufgetreten Warum meine Methode ist falsch? Bitte sag mir, kann ich sowas machen oder nicht? Wenn ich bitte helfen kann, den Weg zu finden, wie man das macht.

Antwort

0

Versuchen Sie folgendes:

dynamic playButton = FooInstance.playButton; 

playButton.Image = (Image)pauseBitmap; 
+0

Könnten Sie bitte etwas Code hinzufügen, wie ich so etwas tun könnte? –

+0

Es ist in Ordnung, aber ich muss Wert auf Image-Eigenschaft von playButton, nicht playButton setzen. –

+0

Dann müssten Sie die Image-Eigenschaft dieses Objekts widerrufen. –

Verwandte Themen