Как в Unity с C# 8 использовать отражение для установки значения изменяемого поля?C#

Место общения программистов C#
Ответить
Anonymous
 Как в Unity с C# 8 использовать отражение для установки значения изменяемого поля?

Сообщение Anonymous »

Вот простой пример:

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

[System.Serializable]
public struct PlayerData
{
public string name;
public int level;
public float health;
}

[Test]
public void SetValue_ChangesHealthUsingReflection()
{
// Arrange
var playerData = new PlayerData
{
name = "Test Player",
level = 1,
health = 100f
};

// Act
var healthField = typeof(PlayerData).GetField("health");
healthField.SetValue(playerData, 75.5f);

// Assert
Assert.AreEqual(75.5f, playerData.health);
}
Просто происходит сбой, значение playerData по-прежнему равно 100.0f.
В чем причина такого поведения и как это исправить?
Просто происходит сбой, значение playerData по-прежнему равно 100.0f.
В чем причина такого поведения и как это исправить?
п>

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

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

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

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

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

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