public static string serialise(object o)
{
string returnValue = "";
Type magicType = o.GetType();
returnValue += "<" + magicType.Name + ">";
foreach (var oField in magicType.GetFields())
{
Type T = oField.FieldType;
FieldInfo fi = magicType.GetField(oField.Name);
object s = fi.GetValue(o);
if (Convert.GetTypeCode(s) != TypeCode.Object)
{
returnValue += "<" + oField.Name + ">" + s.ToString() + "</" + oField.Name + ">";
}
else
{
if (s is System.Collections.IList)
{
returnValue += "<" + oField.Name + ">" + serialise(s) + "</" + oField.Name + ">";
}
else
{
returnValue += "<" + oField.Name + ">" + serialise(s) + "</" + oField.Name + ">";
}
}
}
returnValue += "</" + magicType.Name + ">";
return returnValue;
}
ils doivent être trop spécifiques.....je veux éviter d'utiliser les composant qui travaillent en xml
public MaClasse { public string Nom {get; set;} public string List<T> MesDonnees {get; set;} }
Ha ba quand on veut réinventer l'Amérique aussi...
FieldInfo[] arrFi = leTypeConteneur.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); foreach (FieldInfo fi in arrFi) { // fi.Name contient le nom de la liste }
List'1et non
ls, qui est donc le nom que j'ai donné à ma variable ...
if (o is System.Collections.IList)
{
FieldInfo[] arrFi = myType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo fi in arrFi)
{
string s = fi.Name;
// fi.Name contient le nom de la liste
}
}
28 août 2014 à 17:02
bne continuation.
naga