Fórum List<object.GetType()> = new List<object.GetType()> #434331
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 :)