Тема интересная, но слишком специализированная.
Думаю, для большинства людей вот этой статьи будет достаточно: www.javenue.info/post/84 — это своего рода Reflection Cookbook
На C# подобное реализуется с помощью LambdaExpression.Compile(). (http://stackoverflow.com/questions/346523/how-do-i-compile-an-expression-tree-into-a-callable-method-c как quick-start)
Вероятно, там понадобится DynamicMethod, который и будет вызывать target. Подозреваю, что туда добавится некоторая стоимость копирования аргументов по стеку + 1 callvirt.
Вероятно, там понадобится DynamicMethod, который и будет вызывать target. Подозреваю, что туда добавится некоторая стоимость копирования аргументов по стеку + 1 callvirt.
Вызовы рефлекшина такие дорогие, потому что проверяется видимость, секьюрити итп вещи. Вызовы можно ускорить до уровня FastClass, итп просто вызвав у метода метод setAccessible(true). Так что, чтобы получать хороший перформанс в рефлекшине, не зачем так извращаться.
Спасибо, по настоящему полезный комментарий. Есть несколько хороших моментов в этой методике. Главный — cglib действительно быстрее reflection, а значит я не зря переводит всё это :)
Делаем reflection быстрой как прямые вызовы