Могу ли я установить значение для структуры с помощью отражения без бокса?

На самом деле, я должен был спросить: как я могу это сделатьа также оставаться совместимым с CLS? Потому что я могу думать только о том, чтобы сделать это следующим образом, но используя либо__makeref, FieldInfo.SetValueDirect или простоSystem.TypedReference в целом делает недействительным соответствие CLS.

// code illustrating the issue:
TestFields fields = new TestFields { MaxValue = 1234 };  // test struct with one field

FieldInfo info = fields.GetType().GetField("MaxValue");  // get the FieldInfo

// actual magic, no boxing, not CLS compliant:
TypedReference reference = __makeref(fields);
info.SetValueDirect(reference, 4096);

Соответствующий аналогSetValueDirect являетсяSetValue, но он принимает объект в качестве цели, поэтому моя структура будет упакована, что заставит меня установить значение для копии, а не исходную переменную.

Универсальный аналог дляSetValue не существует, насколько я знаю. Есть ли другой способ задания поля (ссылки на) структуры с помощью отражения?

Ответы на вопрос(3)

Ваш ответ на вопрос