#c# #unity3d #reflection
Вопрос:
Я просто не могу заставить это работать, так что, может быть, кто-нибудь сможет меня поддержать.
Я хочу программно задать значение определенного поля компонента. Вот мой код для этого (Log_temp-это компонент):
FieldInfo info = Log_temp.GetType().GetField("Driver_" tour.Driver);
TypedReference infoStructRef = __makeref(Log_temp);
JSON Tour_Json = JSON.Serialize(tour);
info.SetValueDirect(infoStructRef, Tour_Json.CreateString());
Это работает совершенно нормально. Теперь я хотел не только установить значение, но и ДОБАВИТЬ (строковое) значение к существующему значению в поле. Вот что я попробовал:
FieldInfo info = Log_temp.GetType().GetField("Driver_" tour.Driver);
TypedReference infoStructRef = __makeref(Log_temp);
JSON Tour_Json = JSON.Serialize(tour);
info.SetValueDirect(infoStructRef, info.GetValueDirect(infoStructRef).ToString() Tour_Json.CreateString());
Я попробовал несколько других подходов, но либо я получаю ошибку, либо ничего не меняется. Может ли кто-нибудь помочь мне с этим? Большое спасибо!
Ответ №1:
Не эксперт по отражению, но разве вы не можете просто использовать GetValue
и SetValue
info.SetValue(Log_temp, (string)info.GetValue(Log_temp) Tour_Json.CreateString());
Комментарии:
1. Большое вам спасибо! Никогда раньше не использовал отражения, но ваше решение выглядит красиво и отлично работает!