C# Reflection: В чем разница между FieldInfo.SetValue() и FieldInfo.SetValueDirect()?

FieldInfo документация, которую я смог найти, не сравнивала и не сравнивала эти два метода. Мне интересно понять, когда один должен использоваться поверх другого (желательно с небольшим фрагментом кода).

1 ответ

Решение

SetValueDirect принимает параметр TypedReference и, как таковой, его следует использовать, когда необходима совместимость параметров varargs. Это не выполняет упаковку / распаковку значений и проверку доступа. Он работает быстрее, чем SetValue.

SetValue, с другой стороны, работает практически во всем остальном. Он выполняет упаковку / распаковку параметра, где это необходимо, а также проверяет доступ.

Есть SO, которые обсуждают TypedReferences здесь и здесь - в обоих есть примеры кода.

Другие вопросы по тегам