У меня есть функция '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();
}
Спасибо за любой ответ.