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

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

Сообщение Anonymous »

У меня есть melonloader в игре il2cpp, и я пытаюсь написать для него мод.
Мне нужно получить поле Joint.massScale из il2cppSystem.Object как ConfigurationJoint : Объединенный объект.
Это поле существует в UnityExplorer:
Изображение

И может ли пользователь напрямую:

Что не получается:

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

.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());
}
Но это... МА
Дополнительная информация:
Я выполняю некоторую отладку и вывожу все поля типа и его подтипа:

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

base type: UnityEngine.ConfigurableJoint
fields:
set_targetPosition
set_xDrive
set_yDrive
set_zDrive
set_targetRotation
set_rotationDriveMode
set_slerpDrive
set_targetPosition_Injected
set_xDrive_Injected
set_yDrive_Injected
set_zDrive_Injected
set_targetRotation_Injected
set_slerpDrive_Injected
targetPosition
xDrive
yDrive
zDrive
targetRotation
rotationDriveMode
slerpDrive

base type: UnityEngine.Joint
fields:
get_connectedBody
set_connectedBody
set_axis
get_anchor
set_anchor
get_connectedAnchor
set_connectedAnchor
set_autoConfigureConnectedAnchor
set_enableCollision
set_enablePreprocessing
set_axis_Injected
get_anchor_Injected
set_anchor_Injected
get_connectedAnchor_Injected
set_connectedAnchor_Injected
connectedBody
axis
anchor
connectedAnchor
autoConfigureConnectedAnchor
enableCollision
enablePreprocessing
Флаги: BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Declared для каждого подтипа

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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