Je suis en train de d'utiliser la réflexion pour atteindre les objectifs suivants:C# récursive Listes de réflexion et génériques de définir les propriétés par défaut
je besoin d'une méthode où je passe dans un objet et cette méthode récursive instancier l'objet avec les objets enfants et Définissez les propriétés avec des valeurs par défaut. J'ai besoin de l'objet entier instancié allant autant de niveaux que nécessaire.
Cette méthode doit être capable de gérer un objet avec plusieurs propriétés qui seront des listes génériques d'autres objets.
Voici mon exemple de code (je reçois un paramètre exception de non-concordance de comptage lorsque je reçois un objet contenant un List<AnotherSetObjects>
:
private void SetPropertyValues(object obj)
{
PropertyInfo[] properties = obj.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
if (property.PropertyType.IsClass && property.PropertyType != typeof(string) && property.PropertyType.FullName.Contains("BusinessObjects"))
{
Type propType = property.PropertyType;
var subObject = Activator.CreateInstance(propType);
SetPropertyValues(subObject);
property.SetValue(obj, subObject, null);
}
else if (property.PropertyType == typeof(string))
{
property.SetValue(obj, property.Name, null);
}
else if (property.PropertyType == typeof(DateTime))
{
property.SetValue(obj, DateTime.Today, null);
}
else if (property.PropertyType == typeof(int))
{
property.SetValue(obj, 0, null);
}
else if (property.PropertyType == typeof(decimal))
{
property.SetValue(obj, 0, null);
}
}
}
Merci
Il serait utile de savoir quelle ligne vous obtenez l'erreur. En outre, il semble que vous ne créiez que de nouveaux objets pour les propriétés dont le nom contient BusinessObjects, et ce n'est pas clair si c'était votre intention. –