如何设置变量的值?

时间:2016-06-21 08:23:46

标签: c# reflection

我找到了这个例子来设置Class属性的值:

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

但是我想在我的“this”中设置一个变量的值。

即。在我的主要形式中,我有一个私人双“Momentum”

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

这不起作用 - “property”为空。

如何更改上述代码才能实现此目的?

1 个答案:

答案 0 :(得分:0)

说真的,如果你需要从你拥有的变量中设置字段值,为什么还要使用反射呢?

好的,让我们忘记......如果您有字段而不是属性,则需要使用GetField

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

此外,这可能是使用nameof的好地方,但这只是一个建议。