我目前正在将 Unity 游戏移植到 WinRT/通用 Windows 平台 (UWP) 或您现在所称的任何内容。我的游戏使用了资产商店中的一个插件,该插件大量使用反射,并且我遇到属性 FieldInfo.FieldHandle 不存在的问题。
例如,这是一个使用 FieldHandle 属性的方法
public void InitFromComponent(Component component)
{
m_ComponentType = component.GetType();
m_Fields.Clear();
foreach (FieldInfo f in m_ComponentType.GetFields())
{
if (f.IsPublic)
{
if (f.FieldType == typeof(float)
|| f.FieldType == typeof(Vector4)
|| f.FieldType == typeof(Vector3)
|| f.FieldType == typeof(Vector2)
|| f.FieldType == typeof(int)
|| f.FieldType == typeof(bool)
|| f.FieldType == typeof(string))
{
m_Fields.Add(new Field(f.FieldHandle, f.GetValue(component)));
}
}
}
}
public Field(RuntimeFieldHandle fieldHandle, object args)
{
FieldHandle = fieldHandle;
Args = args;
}
那么有没有办法在 WinRT 上获取 RuntimeFieldHandle?