C# Reflection: В чем разница между FieldInfo.SetValue() и FieldInfo.SetValueDirect()?
FieldInfo
документация, которую я смог найти, не сравнивала и не сравнивала эти два метода. Мне интересно понять, когда один должен использоваться поверх другого (желательно с небольшим фрагментом кода).
1 ответ
Решение
SetValueDirect принимает параметр TypedReference и, как таковой, его следует использовать, когда необходима совместимость параметров varargs. Это не выполняет упаковку / распаковку значений и проверку доступа. Он работает быстрее, чем SetValue.
SetValue, с другой стороны, работает практически во всем остальном. Он выполняет упаковку / распаковку параметра, где это необходимо, а также проверяет доступ.
Есть SO, которые обсуждают TypedReferences здесь и здесь - в обоих есть примеры кода.