我试图在类中设置对象的属性,但错误显示Object does not match target type
。
FieldInfo dControl = window.GetType().GetField("dControl", BindingFlags.NonPublic | BindingFlags.Instance);
if (dControl == null) { Debug.Log ("dControl is null"); return;}
Type typeDC = dControl.FieldType;
PropertyInfo inPreviewMode = typeDC.GetProperty("InPreviewMode", BindingFlags.Public | BindingFlags.Instance);
if (inPreviewMode == null) { Debug.Log ("dControl.InPreviewMode is null"); return;}
bool value = false;
inPreviewMode.SetValue(dControl, value, null);
这是我试图访问的属性:
public class DControl : TimeArea
{
public bool InPreviewMode
{
get
{
return dState.IsInPreviewMode;
}
set
{
if (cutscene != null)
{
...
}
}
dState.IsInPreviewMode = value;
}
...
}
非常感谢帮助。
答案 0 :(得分:2)
SetValue
的第一个参数是要为其设置值的实例。即,它期待DControl
的实例 - 您的代码将其传递给FieldInfo
的实例。
所以你可能必须通过反射得到那个实例:
DControl ctrl = (DControl)dControl.GetValue(window);
然后将其传递给设定值
inPreviewMode.SetValue(ctrl, value, null);