Отражение не увидело полеC#

Место общения программистов C#
Anonymous
Отражение не увидело поле

Сообщение Anonymous »

У меня есть melonloader в игре il2cpp, и я пытаюсь написать для него мод.
Мне нужно получить поле Joint.massScale из il2cppSystem.Object как ConfigurationJoint : Объединенный объект.
Это поле существует в UnityExplorer:
[img]https:// i.sstatic.net/pzjX8pef.png[/img]

И может пользователь напрямую:
[img]https://i .sstatic.net/k7Mlnub8.png[/img]

Что не удалось:

Код: Выделить всё

.GetMember
и .GetMembers: они просто не включают это поле/свойство

Код: Выделить всё

MemberInfo member = anyObject.GetIl2CppType()
.GetMember(requested, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy)
.First();
Рекурсивный GetMember:

Код: Выделить всё

static IEnumerable GetAllMembersRecursivly(Il2CppSystem.Type type) =>
type.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)
.Concat(type.BaseType == Il2CppType.Of() ? new MemberInfo[0] : GetAllMembersRecursivly(type.BaseType));
Результат тот же
Может быть???
Единственное обходное решение, которое я нашел, — это жестко запрограммировать этот тип, например это:

Код: Выделить всё

if (cj != null && requested == "massScale" && !path.Any())
{
return ((v) => cj.massScale = v.Unbox(), Il2CppType.Of());
}
Но это... МА


Подробнее здесь: https://stackoverflow.com/questions/790 ... -see-field

Вернуться в «C#»