我找到了这个例子来设置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”为空。
如何更改上述代码才能实现此目的?
答案 0 :(得分:0)
说真的,如果你需要从你拥有的变量中设置字段值,为什么还要使用反射呢?
好的,让我们忘记......如果您有字段而不是属性,则需要使用GetField
:
var value = "5.5";
var field = this.GetType().GetField(nameof(Momentum), BindingFlags.NonPublic);
field.SetValue(self /* or this */, value);
此外,这可能是使用nameof
的好地方,但这只是一个建议。