2016-03-22 166 views
0

問題是從列表中的值,我得到:如何使用

我一直在使用DAO連接3類

public abstract class RelacionamentoComercial 
{ 
    public string cod_usu { get; set; } 
    public IList<Endereco> endereco { get; set; } 
} 

public class Usuario: RelacionamentoComercial 
{ 
    public string senha { get; set; } 
    public string cod_est { get; set; } 
} 

public class Endereco 
{ 
    public string endereco { get; set; } 
    public string bairro { get; set; } 

} 

我好,

public Usuario Save(Usuario usuario) 
{var table = abstractDAO.OpenTable(TableName); 
     table .Seek(usuario.cod_usu); 
     PropertyInfo[] properties = usuario.GetType().GetProperties(); 
     foreach (PropertyInfo property in properties) 
     { 
      object propertyValue = property.GetValue(usuario, null); 
      if (propertyValue != null) 
      { 
       if (propertyValue.GetType() == typeof(int)) 
        table.PutInteger(property.Name.ToUpper(), Convert.ToInt32(propertyValue)); 
       else if (propertyValue.GetType() == typeof(double)) 
        table.PutDouble(property.Name.ToUpper(), Convert.ToDouble(propertyValue)); 
       else if (propertyValue.GetType() == typeof(bool)) 
        table.PutBoolean(property.Name.ToUpper(), Convert.ToBoolean(propertyValue)); 
       else if (propertyValue.GetType() == typeof(DateTime)) 
        table.PutDate(property.Name.ToUpper(), Convert.ToDateTime(propertyValue)); 
       else if (propertyValue.GetType() == typeof(string)) 
        table.PutString(property.Name.ToUpper(), Convert.ToString(propertyValue)); 
       else if (propertyValue.GetType().GetGenericTypeDefinition() == typeof(List<>)) 
       { 
        <<<<?>>>> 
       } 

我想獲得一個列表< Endereco>保存在Clientes,但我不知道如何去做,我已經試過用反射

PropertyInfo[] propList = propertyValue.GetType().GetProperties(); 
        foreach (PropertyInfo prop in propList) 
012如果

但沒用, 有人有更好的想法,請

+1

給你一個燈?爲什麼?你有煙嗎? – Peter

+0

爲什麼你甚至用反射來開始? – Ric

+0

我們需要一個動態的saveDAO,這是我們發現的最好的,從模型中獲取屬性並添加到數據庫中,比使用存儲過程和從對象傳入參數更好的同名 –

回答

0

我建議嘗試類似:

public static object ConvertList(List<object> value, Type type) 
{ 
    var listType = type.GenericTypeArguments.First(); 
    return value.Select(item => Convert.ChangeType(item, listType)); 
} 

這應該做的伎倆。