Проблема получения/установки отражения Unity C#

#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. Большое вам спасибо! Никогда раньше не использовал отражения, но ваше решение выглядит красиво и отлично работает!