NVelocity: как эффективно использовать тот же файл шаблона - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть функция 'RenderTemplate', которая принимает один параметр типа MyClass (см. Код ниже) и отображает файл шаблона 'template.vm' с объектом типа MyClass (см. Код ниже), он работает нормально. Но каждый раз, когда я вызываю функцию, инициализируется один экземпляр механизма Velocity (что на самом деле не является проблемой, потому что только первая инициализация будет применяться, поскольку do c говорит: http://velocity.apache.org/engine/devel/developer-guide.html#the -velocity-helper- класс ), но:

1) мне действительно каждый раз создавать экземпляр VelocityContext? Было бы удобнее иметь только один экземпляр VelocityContext и изменить его ключ 'myClass' с новым параметром (см. Код RenderTemplate ниже)?

2) И если это произойдет, я должен волноваться об утечке памяти из-за 'узлового кеширования c кеширования интроспекции' (я не уверен, что понимаю эту концепцию очень хорошо), о котором они говорят в do c http://velocity.apache.org/engine/devel/developer-guide.html#other -context-questions ?

Ниже приведено содержимое файла шаблона 'template.vm', который я буду использовать в функции RenderTemplate:

Here are the prop: $myClass.MyProp1  $myClass.MyProp2  $myClass.MyProp3

Вот объявление тип MyClass:

public class MyClass
{
    public string MyProp1 { get; set; }
    public string MyProp2 { get; set; }
    public string MyProp3 { get; set; }
}

А вот определение функции 'RenderTemplate':

public string RenderTemplate(MyClass myClassObj)
{
     Velocity.Init();
     VelocityContext velocityContext = new VelocityContext();
     velocityContext.Put("myClass", myClassObj);

     StringWriter stringWriter = new StringWriter();

     Velocity.MergeTemplate("template.vm", velocityContext, stringWriter);

     return stringWriter.ToString();
}

Спасибо за любой ответ.

...