Vous avez une question de réflexion complexe. Étant donné le code ci-dessous comment implémenteriez-vous le pseudo de sorte que donné une instance de Parent il énumérera sur les types Propriétés trouve des objets enfants avec une propriété du même type que Parent et définit la référence au p fourni. J'espère que cela a du sens. J'ai aussi besoin de cela pour travailler avec des listes génériques. Voir ci-dessous pour un exemple de graphe d'objet. Après avoir exécuté ceci, chaque instance de Person dans l'enfant Pet sera l'instance Parent.C# Réflexion et génériques
public class ChildSetter<Parent>
{
public void Set(Parent p)
{
//pseudo
//var parentName = p.GetType().Name;
//foreach (var property in p.Properties)
//{
// if (!property.IsList)
// {
// if (property.ContainsProperty(parentName))
// property.Properties[parentName] = p;
// }
// else
// {
// if (property.ListType.ContainsProperty(parentName))
// {
// foreach (var item in property)
// {
// item.Properties[parentName] = p;
// }
// }
// }
//}
}
}
public class Person
{
public Pet Pet { get; set; }
public IList<Pet> Pets { get; set; }
}
public class Pet
{
public Person Person { get; set; }
}
Un exemple non générique de ce code est ci-dessous:
public void Set(Person p)
{
p.Pet.Person = p;
foreach (var pet in p.Pets)
{
pet.Person = p;
}
}
Cette question est liée à cette question: http://stackoverflow.com/questions/552736/child-tables-in-nhibernate – bleevo