Я использовал отражение в своем проекте C# для доступа к общедоступным полям в различных пользовательских типах данных. Я использовал mono для запуска своего кода на Mac, но впервые я создал собственный автономный проект, используя «dotnetPublish -r osx-x64 -c Release --self-contained -p:PublishAot=true ". Все работает правильно, кроме GetField/GetFields.
Например, класс в моем проекте имеет общедоступную строку с именем name. Допустим, этот класс называется бытие.
Код: Выделить всё
//o is of type object which is an instance of being
o.GetType().GetField("name").SetValue(o, "somevalue");
Причина, по которой мне это кажется ошибкой, заключается в том, что это будет работать, если я получу доступ к состоянию сначала таким образом:
Код: Выделить всё
var field = typeof(being).GetField("name");
Мне нужен обходной путь, независимо от того, ошибка это или нет. В некоторых случаях я не знаю тип во время компиляции, поэтому не могу выполнить typeof(being), typeof(monster) и т. д. Мне приходится полагаться на GetType().
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/779 ... ly-typeoft