Мне кажется, что вы хотите передать экземпляр объекта сериализатору, и этот сериализатор автоматически перечисляет все свойства экземпляра и возвращает их в виде строки XML.
Хорошая новость: есть несколько способов сделать это. Возможно, вы захотите проверить пространство имен System.Reflection, которое содержит всевозможные типы, чтобы помочь вам осмотреть объект во время выполнения.
В качестве простого примера грубой силы:
public string GetXml<T>(T instance)
{
var type = typeof(T);
var properties = type.GetProperties();
var builder = new System.Text.StringBuilder();
builder.AppendFormat("<{0}>", type.Name);
foreach (var property in properties)
{
var name = property.Name;
var value = property.InvokeMember(name,
BindingFlags.DeclaredOnly |
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.GetProperty,
null,
instance,
null);
builder.AppendFormat("<{0}>{1}</{0}>",
name,
value);
}
builder.AppendFormat("</{0}>", type.Name);
return builder.ToString();
}
Это должно, по крайней мере, указать вам правильное направление.
РЕДАКТИРОВАТЬ ПО L.B
Та же идея, используя Linq2Xml
public static string GetXml<T>(T obj)
{
Type t = typeof(T);
XElement xElem = new XElement("ENTITY");
xElem.Add(t.Name,
new XElement("ATTRIBUTES",
t.GetFields()
.Select(f => new XElement("ATTRIBUTE",
new XAttribute("name",f.Name),
f.GetValue(obj)))
.ToArray())
);
return xElem.ToString();
}