List<object.GetType()> = new List<object.GetType()>
08/02/2013
0
//tenho as seguintes classes
//exemplo utilizando as classes acima
class Item { } class Order { public List<Item> Items { get; set; } }
class Phone { } class Seller { public List<Phone> PhoneNumbers { get; set; } }
class MyAdapter { public List<Model> Read<Model>() where Model: new() { List<Model> result = new List<Model> Model obj = new Model(); result.Add(obj); PropertyInfo[] properties = typeof(Model).GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); foreach (PropertyInfo property in properties) { Type propertyType = property.PropertyType; if (propertyType.IsGenericType) { Type propGenericType = propertyType.GetGenericTypeDefinition(); if (propGenericType == typeof(List<>)) { Type listType = propertyType.GetGenericArguments()[0]; //o problema esta nesse ponto... //preciso preencher a lista das propriedades filhas e depois atribuilas nos objetos pais //chamada recursiva //chama Read mais uma vez, agora passando como generic o tipo da propriedade filha //esse ponto nao é reconhecido pelo compilador List<listType> lst = this.Read<listType>(); property.SetValue(obj, lst, null); //...o problema esta nesse ponto } } } return result; } }
//exemplo utilizando as classes acima
MyAdapter adp = new MyAdapter(); //fill list of orders with your items List<Order> orders = adp.Read<Order>(); //fill list of sellers with your phonenumbers List<Seller> sellers = adp.Read<Seller>();
Joab Silveira
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)