Получил сложный вопрос для размышления. Учитывая приведенный ниже код, как бы вы реализовали псевдо, чтобы в случае экземпляра Parent он перечислил типы свойств, нашел дочерние объекты со свойством того же типа, что и Parent, и установил ссылку на предоставленный p. Надеюсь, что это имеет смысл. Также мне это нужно для работы со списками Generic. Ниже приведен пример графического объекта. После этого каждый Person в дочернем экземпляре Pet будет родительским.
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; }
}
Необобщенный пример этого кода приведен ниже:
public void Set(Person p)
{
p.Pet.Person = p;
foreach (var pet in p.Pets)
{
pet.Person = p;
}
}