В дополнение к вышеизложенному - используйте новые классы XML, поставляемые с Linq, - они значительно упрощают генерацию XML логическим способом, хотя вы не будете заниматься чем-то похожим на шаблон в C #.
Если вам действительно нужен какой-то шаблон, как тогда - и я знаю, что это не обязательно пойдет хорошо - вы должны взглянуть на выполнение этой части системы в VB.NET, которая имеет явно поддерживает для шаблона как генерация XML как часть его реализации Linq to XML. По крайней мере, вы должны посмотреть на то, что предлагает VB.NET, прежде чем отклонить его.
Природа .NET означает, что вам не нужно использовать VB.NET для чего-либо другого, вы можете ограничить его классами, необходимыми для генерации XML, и его «универсальным» в том смысле, что он поставляется с .NET, и окружающая логика должна быть понятна любому компетентному программисту .NET.