Другой вариант - использовать дженерики.Это будет полезно, если вам нужно наложить ограничения на типы, которые могут быть переданы в:
public void BuildXml<T>(T obj)
{
// do work
}
или если вы ожидаете коллекцию объектов:
public void BuildXml<T>(IEnumerable<T> items)
{
// do work
}
Тогда вы можетеиспользуйте рефлексию, чтобы получить нужные данные.