Comments 5
Это, конечно, всё круто интересно. Но в таких случаях проще составить текст с метками типа "@#$1" и затем использовать String.Replace
Почему? Задача у вас одноразовая. Время на генерацию одного письма даже этим неэффективным методом будет на несколько порядков быстрее отправки самого письма, поэтому затраты незначительны. А код пишется за минуты. Только обязательно протестировать нужно. Массовая рассылка всё же. Кто его знает, что с вами будет, если миллион человек мысленно пошлют вам по капле ненависти.
Почему? Задача у вас одноразовая. Время на генерацию одного письма даже этим неэффективным методом будет на несколько порядков быстрее отправки самого письма, поэтому затраты незначительны. А код пишется за минуты. Только обязательно протестировать нужно. Массовая рассылка всё же. Кто его знает, что с вами будет, если миллион человек мысленно пошлют вам по капле ненависти.
+2
Время на генерацию одного письма даже этим неэффективным методом будет на несколько порядков быстрее отправки самого письма, поэтому затраты незначительны. А код пишется за минуты.
Именно. По-моему, автор построил большую такую пушку, чтобы стрелять по маленьким таким воробьям, и оптимизирует этап, и так занимающий 1% времени всей рассылки.
0
Во-первых, и это самое главное, я хотел рассказать о динамических функциях и байт-коде. Это только один из примеров, где их можно использовать.
Во-вторых, строковые метки, как выразился автор первого комментария, требуют кода, который будет сопоставлять их со значениями из модели. В шаблонизаторе этого не требуется. Кроме того, можно передать в модель заведомо избыточную информацию (данные о пользователе — порядка 30 параметров, данные о рассылке, данные о системе), а автор шаблона, который вообще говоря не является программистом, сам решит, какие поля ему нужны в шаблоне, а какие нет.
В-третьих, задача не одноразовая. В различных вариантах мне приходилось решать ее и ранее.
Во-вторых, строковые метки, как выразился автор первого комментария, требуют кода, который будет сопоставлять их со значениями из модели. В шаблонизаторе этого не требуется. Кроме того, можно передать в модель заведомо избыточную информацию (данные о пользователе — порядка 30 параметров, данные о рассылке, данные о системе), а автор шаблона, который вообще говоря не является программистом, сам решит, какие поля ему нужны в шаблоне, а какие нет.
В-третьих, задача не одноразовая. В различных вариантах мне приходилось решать ее и ранее.
0
Почему не использовались Expressions? Особых фич, доступных только в IL, я тут не заметил — а использовать Expressions намного проще...
0
Sign up to leave a comment.
Articles
Change theme settings
Заполнение текстовых шаблонов данными на основе модели. Реализация на .NET с использованием динамических функций в байт-коде (IL)