使用反射设置属性值并引发异常



我在我的MAUI应用程序中使用微软社区MVVM包。它工作得很好,但是我遇到了一个问题。

UI的一部分修改了一个结构,该结构向视图模型发送消息。这很好。然而,当我试图修改结构时,我得到一个异常(Object does not match target type.)

导致异常的代码如下所示

messenger.Register<ObjectMessage>(this, (o, t) =>
{
switch (t.Sender)
{
case "Changes":
try
{
var prop = Content.Structure.GetType().GetProperty((string)t.Message);
prop.SetValue(t.Value, Convert.ChangeType(t.Value, prop.PropertyType));
}
catch(Exception ex)
{
#if DEBUG
Console.WriteLine($"Exception - ex.Message = {ex.Message}");
#endif
}
HasChanges = Content.Structure != DupeContent.Structure;
break;
}
});

我已经尝试了许多不同的方法来分配值给属性,但总是得到异常。

t.Valuet.Messageobject

SetValue的第一个参数应该是您试图修改的实际对象。在这种情况下,它似乎是Content.Structure(因为这就是您所说的GetType()on)。尝试使用该对象作为第一个参数:

prop.SetValue(Content.Structure, Convert.ChangeType(t.Value, prop.PropertyType));

相关内容

  • 没有找到相关文章

最新更新