我在我的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.Value
和t.Message
为object
型
SetValue
的第一个参数应该是您试图修改的实际对象。在这种情况下,它似乎是Content.Structure
(因为这就是您所说的GetType()
on)。尝试使用该对象作为第一个参数:
prop.SetValue(Content.Structure, Convert.ChangeType(t.Value, prop.PropertyType));