Для сравнения яблок с яблоками вызовите Type.GetConstructor, чтобы получить объект ConstructorInfo, и вызовите его для создания вашего объекта.Затем вы можете сохранить ConstructorInfo и использовать повторно.Активатор очень медленный по сравнению.
Отвечая на ваш вопрос о том, как работает способ отражения:
Активатор ищет в метаданных загруженных сборок имя типа, соответствующее указанному вами.Затем он ищет конструктор, похожий на Type.GetConstructor, который возвращает ConstructorInfo.Он вызывает этот конструктор и возвращает объект.
Затем, когда вы вызываете Type.InvokeMember, вы снова используете отражение, запрашивая метаданные класса, чтобы найти соответствующую сигнатуру метода.Это возвращается как MethodInfo, который затем вызывается.
Тяжелая работа в отражении - это не сам вызов, а метаданные, которые ищут тип, конструктор и метод.Вот почему я говорил, что вы можете вызывать относительно высокопроизводительные вызовы методов для отраженных объектов, повторно используя объекты ConstructorInfo и MethodInfo.Вы найдете многократный вызов MethodInfo.Invoke намного быстрее, чем Type.InvokeMember