2016-06-21 6 views
-6

私はクラスのプロパティの値を設定するには、この例を発見した:変数の値を設定するにはどうしたらいいですか?

Ship ship = new Ship(); 
string value = "5.5"; 
var property = ship.GetType().GetProperty("Latitude"); 
var convertedValue = property.Converter.ConvertFrom(value); 
property.SetValue(self, convertedValue); 

をしかし、私は私の「この」で変数の値を設定します。

すなわち私のメインフォームで、私は民間ダブル「勢い」

を持って
string value = "5.5"; 
var property = this.GetType().GetProperty("Momentum"); 
var convertedValue = property.Converter.ConvertFrom(value); 
property.SetValue(self, convertedValue); 

これは動作しません - 「プロパティが」nullです。

これを達成するために上記のコードを変更するにはどうすればよいですか?

+1

「自己」とは何ですか? – JLRishe

+2

'this.Momentum = 5.5' - つまり、なぜ最初に反射を使用していますか? – Jamiec

+1

プライベートダブルwhat?フィールドまたはプロパティ? – Denis

答えて

0

本当に、自分が所有する変数からフィールド値を設定する必要がある場合は、反射を使用していますか?

さて、そのことを忘れてみましょう...あなたはフィールドではなくプロパティを持っている場合は、GetFieldを使用する必要があります。

var value = "5.5"; 
var field = this.GetType().GetField(nameof(Momentum), BindingFlags.NonPublic); 
field.SetValue(self /* or this */, value); 

また、これはnameofを使用するには良い場所かもしれないが、それはありますほんの一言。

+0

'Console.WriteLine(" Mom: "+ Momentum); varフィールド= this.GetType()。GetField( "Momentum"); field.SetValue(フィールド、 "5.5"); Console.WriteLine( "Mom:" + Momentum); '働いていないの? – ManInMoon

+0

申し訳ありませんが、それは私に二重に見えました、あまりにも文字列になる可能性があります。あなたが正しいタイプを使用しても大丈夫です。 –

+0

私の "field"はnullです。
this.GetType()。GetField( "Momentum")が機能していない – ManInMoon

関連する問題