В настоящее время я строю этот небольшой шаблон для шаблонов. Он принимает строку, содержащую шаблон в параметре, и словарь «теги, значения» для заполнения шаблона.template engine implementation
В двигателе я понятия не имею о тегах, которые будут в шаблоне, и те, которые не будут.
В настоящее время я выполняю итерацию (foreach) на dictionnary, разбор строки, которую я поместил в построитель строк, и заменив теги в шаблоне на их соответствующее значение.
Есть ли более эффективный/удобный способ сделать это? Я знаю, что главный недостаток заключается в том, что строковый конструктор разбирается каждый раз полностью для каждого тега, что довольно плохо ...
(Я также проверяю, хотя и не включен в образец, после процесса, который мой шаблон делает не содержат какой-либо тег больше все они отформатированный таким же образом:. @@ @@ тега)
//Dictionary<string, string> tagsValueCorrespondence;
//string template;
StringBuilder outputBuilder = new StringBuilder(template);
foreach (string tag in tagsValueCorrespondence.Keys)
{
outputBuilder.Replace(tag, tagsValueCorrespondence[tag]);
}
template = outputBuilder.ToString();
Отклики:
@Marc:
string template = "Some @@[email protected]@ text in a @@[email protected]@ template";
StringDictionary data = new StringDictionary();
data.Add("foo", "value1");
data.Add("bar", "value2");
data.Add("foo2bar", "value3");
Выход: "Некоторый текст в шаблоне значение2"
вместо: "Некоторые @@ Foobar @@ текст в шаблоне значение2"
(ответил на комментарий) –
Изобразительное ... использование Словарь вместо StringDictionary и это вызовет ошибку для пропущенных ключей ... не сложно. –