Так что я предполагаю, что ответ в конечном итоге будет: «Нет, вы не можете этого сделать», но попытка выяснить, как что -то сделать в C#. Я все еще довольно новичок в языке, поэтому пытаюсь узнать, что вы можете и не можете сделать (легко). < /P>
Я задаюсь вопросом о небольшом коде клея между двумя частями, которые я не имею никакого контроля. На стороне данных у меня есть что -то вроде этого: < /p>
public struct StructA
{
public float varA;
}
public class ClassA
{
public struct StructB
{
public StructA? varB;
}
private StructB? varC;
}
< /code>
, а затем, наконец, у меня есть некоторая функция: < /p>
public static void function (ref -float value) < /p>
, поэтому у меня есть поплавок, вложенный в две нулевые структуры и функцию, которая будет принять ссылку на поплавок. Я попытался использовать отражение, чтобы получить информацию о поле для «значения» внутри нулевой обертки, но она ведет себя, как GetValue возвращает, ну, в общем, вся структура вместо ссылки. Это означает, что если я сделаю что -то вроде: < /p>
StructA LocalA = (StructA)typeof(StructA?).GetField("value", BindingFlag.NonPublic|BindingFlags.Instance).GetValue(SomeStructA)
StructA LocalB = (StructA)typeof(StructA?).GetField("value", BindingFlag.NonPublic|BindingFlags.Instance).GetValue(SomeStructA)
LocalA.varA = 1.0f;
< /code>
Я не вижу изменения в LocalB, что имеет смысл, если GetValue возвращает копию, но, поскольку нулевая определяет его внутреннее значение, а также «внутренний», я не вижу другого способа получить ее. Я продолжаю бить наполовину решения, где компилятор признает, что знает, что я пытаюсь сделать, но не позволю мне, так что есть ли способ сказать это просто сделать это?
Подробнее здесь: https://stackoverflow.com/questions/796 ... le-structs