XName имеет неявное преобразование из строки. От MSDN :
Создание объекта XName
XName не содержит общедоступных конструкторов. Вместо этого этот класс обеспечивает неявное преобразование из String, которое позволяет вам создать XName. Чаще всего вы используете это преобразование при создании элемента или атрибута. Первый аргумент конструктора XElement - это XName. Передав строку, вы получаете преимущество неявного преобразования.
Объявление выглядит так:
public static implicit operator XName(string expandedName);