c#反射-获取未知字段的值
本文关键字:字段 未知 获取 反射 | 更新日期: 2023-09-27 18:10:45
我试图使用反射调用一些参数的方法,但我有一些困难使用正确的设置。这是我所做的。
// The method I am trying to call
// UnityGUI
// internal static float DoFloatField(EditorGUI.RecycledTextEditor editor, Rect position, Rect dragHotZone, int id, float value, string formatString, GUIStyle style, bool draggable)
// Called this way : EditorGUI.DoFloatField(EditorGUI.s_RecycledEditor, position, new Rect(0f, 0f, 0f, 0f), controlID, value, EditorGUI.kFloatFieldFormatString, style, false);
Type editorGUIType = typeof(EditorGUI);
Type RecycledTextEditorType = Assembly.GetAssembly(editorGUIType).GetType("UnityEditor.EditorGUI+RecycledTextEditor");
Type[] argumentTypes = new Type[] { RecycledTextEditorType, typeof(Rect), typeof(Rect), typeof(int), typeof(float), typeof(string), typeof(GUIStyle), typeof(bool) };
MethodInfo doFloatFieldMethod = editorGUIType.GetMethod("DoFloatField", BindingFlags.NonPublic | BindingFlags.Static, null, argumentTypes, null);
// Here is the invoke part but I don't know how I can access to the s_RecycledEditor variable of type EditorGUI.RecycledTextEditor
FieldInfo fieldInfo = editorGUIType.GetField("s_RecycledEditor"); // This is null...
object o = fieldInfo.GetValue(null); // ... So the next part can't work.
object[] parameters = new object[]{ o, position2, position, controlID, controlID, "g7", style, true };
doFloatFieldMethod.Invoke(null, parameters);
我不知道我怎么能得到s_RecycledEditor的值,如果下一个代码是工作的。我也不知道我是否应该使用PropertyInfo或FieldInfo。
谢谢。
Edit:我忘记添加s_RecycledTextEditor的描述了。
internal static EditorGUI.RecycledTextEditor s_RecycledEditor = new EditorGUI.RecycledTextEditor();
Type.GetField(string)
只返回公共字段。我怀疑你想要:
FieldInfo fieldInfo = editorGUIType.GetField(
"s_RecycledEditor", BindingFlags.NonPublic | BindingFlags.Static);