2011-09-30 8 views
1

プライベートメンバーの値(Text)をNumericUpDownから取得しようとしています。Reflection C#4を使用してプライベートメンバーの値を取得する方法

public class NumericUpDown 
{ 
     private TextBox Text; 
     ... 
     ... 
} 

なぜフィールドとして表示されないのかわかりません。たぶん誰かがフィールドとメンバーの違いを明らかにすることができます。それは私がリフレクションを使用していることを発見した場だった場合、私はでそれを得ることができます。

typeof(NumericUpDown).GetField("Text", BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this) As TextBox 

が、それは私がでのMemberInfoを取得する必要がありますので、メンバーだ:

typeof(NumericUpDown).GetMember("Text", BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance).GetValue(0) 

これは値を返しません。その型の文字列です。これは、メンバーインフォの値なので意味がありますが、実際のオブジェクトの実際の値が必要です。

FieldInfo.GetValue(オブジェクト)のように取得する方法はありますか?助けや提案。前もって感謝します。

+0

'、それは財産です。それは一般公開されています。どのタイプとメンバーを使用したいかを明確にしてください。 –

+0

@SevaTitovおそらく私の検索が間違っています。私はもともと_textBoxを見つけましたが、私はそれを抽出することができませんでした。それは私が探しているものですか?私はTextBoxを探しています。私が反射で検索したとき、_textBoxとTextが見つかりました。両方ともTextBoxであると言います。この上の任意の光?今私がそれを参照できる唯一の方法は、フォーカスを得るときです。その後、元のソースを取得してそこにテキストボックスを設定すると、これは最善の方法のようには見えません。 – pqsk

+1

System.Windows.Formsから標準のNumericUpDownを使用していると思いました。他のライブラリを使用しているようです。あなたの定義では、 'Text'はフィールドです。そして、あなたは 'myType.InvokeMember(" Text "、BindingFlags.GetField | BindingFlags.Instance | indingFlags.NonPublic、null、myInstance、null); ' –

答えて

3

これは、Silverlightを使用しているためです。

引用:NumericUpDown.Text`はメンバーではありません Silverlight reflection cannot be used to bypass access level restrictions and (for example) invoke private members.

+0

興味深いことに、それを知らなかった。 – Davy8

+0

これは良くて悪いです。なぜ私はそれをつかむことができないのか知っていますが、私は今、私のハックに悩まされています。この問題についていくつか明言してくれてありがとう。 – pqsk