J'ai écrit ces méthodes de classe pour .net 2.0 pour créer des objets à partir de chaînes séparées par des chaînes | '' et inversement. Mais le problème est qu'ils ne donnent pas de bons résultats dans le cas de types Inherted, c'est-à-dire que les propriétés héritées arrivent en dernier et que la séquence des données fournies sous la forme d'une chaîne séparée ne fonctionne pas.Générique Objet à sérialisation de chaîne séparée par '|'
Par exemple:
class A
{
int ID;
}
class B : A
{
string Name;
}
la chaîne est "1 | John". les méthodes lisent sous le nom == 1 et ID == "John".
Dites-moi comment faire.
public class ObjectConverter<T>
{
public static T TextToObject(string text)
{
T obj = Activator.CreateInstance<T>();
string[] data = text.Split('|');
PropertyInfo[] props = typeof(T).GetProperties();
int objectPropertiesLength = props.Length;
int i = 0;
if (data.Length == objectPropertiesLength)
{
for (i = 0; i < objectPropertiesLength; i++)
{
props[i].SetValue(obj, data[i], null);
}
}
return obj;
}
public static string ObjectToText(T obj)
{
StringBuilder sb = new StringBuilder();
Type t = typeof(T);
PropertyInfo[] props = t.GetProperties();
int i = 0;
foreach (PropertyInfo pi in props)
{
object obj2 = props[i++].GetValue(obj, null);
sb.Append(obj2.ToString() + "|");
}
sb = sb.Remove(sb.Length - 1, 1);
return sb.ToString();
}
}