Как своеобразное и очень индивидуальное решение, если вы работаете в среде ASP.NET с использованием движка Razor, в файле CSHTML вы можете:
Func<MyType, HelperResult> xml = @<root>
<item>@(item.PropertyA)</item>
<item>@(item.PropertyB)</item>
<item>@(item.PropertyC)</item>
</root>;
С добавлением метода расширения:
public static XDocument ToXDocument<T>(this Func<T, HelperResult> source, T item)
{
return XDocument.Parse(source(item).ToHtmlString());
}
Вы можете:
XDocument document = xml.ToXDocument(new MyType() {
PropertyA = "foo",
PropertyB = "bar",
PropertyC = "qux",
});
Опять, своеобразно? Да . Case-конкретнее? Да . Но это работает, и дает отличный Intellisense. ( обратите внимание, он также выдаст кучу предупреждений о валидности, в зависимости от версии валидации документа )