После прочтения и чтения я придумал это.
1.
Я добавил свой собственный класс атрибутов? должен быть разумный путь !!
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = true)]
public class XMLAttributeProperty : Attribute
{
public XMLAttributeProperty(string name, string value)
{
this.Name = name;
Value = value;
}
public string Name;
public string Value;
}
2.
Добавьте эти атрибуты в свойства класса
public class Route
{
[XmlAttribute]
public string No
{
get { return "1108"; }
}
**[XMLAttributeProperty("No", "60")]**
public string Name
{
get { return _Name; }
set { _Name = value; }
}
**[XMLAttributeProperty("No", "70")]**
public string City
{
get { return _City; }
set { _City = value; }
}
}
3.
После сериализации по умолчанию класса для элемента ..
<Table>
<Route No="1108">
<Name>Joe</Name>
<City>City1</City>
</Route>
</Table>
4.
Я взял на себя и добавить атрибуты.
foreach (var property in trp.GetType().GetProperties()) //class ->typeof(Transport).GetProperties()
{
foreach (XMLAttributeProperty att in property.GetCustomAttributes(typeof(XMLAttributeProperty), true).Cast<XMLAttributeProperty>())
{
Log.Level0(string.Format("Property {0}, {1}={2}", property.Name, att.Name, att.Value));
var fieldInElement = el.Descendants(property.Name).FirstOrDefault();
if (fieldInElement != null)
{
try
{
fieldInElement.Add(new XAttribute(att.Name, att.Value));
}
catch { }
}
}
}
5.
Это результат. Пожалуйста, прокомментируйте или покажите мне лучше / быстрее. Я счастлив, но потерял много времени.
<Table>
<Route No="1108">
<Name No="60">Joe</Name>
<City No="70">City1</City>
</Route>
</Table>