2015-09-08 4 views
1

Мы два класса:Как я могу получить пользователей?

Первый класс:

public class Team 
{ 
    public Team() 
    { 
     UsersMyTeam = new List<User>(); 
     ID = ""; 
    } 
    public string ID { set; get; } 
    public string NameTeam { set; get; } 

    public List<User> UsersMyTeam { set; get; } 
    public override string ToString() 
    { 
     return "Team"; 
    } 
} 

Второй класс:

public class User 
{  
    public string ID { get; set; } 
    public string Name { get; set; } 
    public string LName { get; set; } 
    public string IsActive { get; set; } 
    public string Date { get; set; } 
    public string TeamID { get; set; } 
    public override string ToString() 
    { 
     return "User"; 
    }  
} 

Я использую класса по коду:

protected void btnTest_Click(object sender, EventArgs e) 
{  
    DALTableIO DTIO = new DALTableIO(); 
    List<Team> listUser = new List<Team>(); 
    Team myTeam = new Team(); 
    myTeam.ID = "426f63a7-7f42-485f-8407-67c680f9e358"; 
    foreach (object item in DTIO.GetAll(myTeam)) 
    { 
     listUser.Add((Team)item); 
    } 
} 

У меня есть класс с именем DALTableIO, которые получают значения из базы данных и поместить их в объект класса:

public class DALTableIO:DALBase 
{ 
    public List<object> GetAll(object MyClass) 
    { 
     SqlDataReader re = ExecuteReader(CommandType.StoredProcedure, string.Concat("GetAll", MyClass.ToString()), new SqlParameter[]{ 
      }); 
     List<object> list = new List<object>(); 
     try 
     { 
      while (re.Read()) 
      { 
       Type t=MyClass.GetType(); 
       // creat new Class 
       object item = Activator.CreateInstance(t); 
       // start Fill Class 
       foreach (PropertyInfo property in MyClass.GetType().GetProperties()) 
       { 
        //when we have property of list<object> 
        if (property.PropertyType.Name.ToLower() == "list`1") 
        { 
         //how can i create list<users> 
         //how can i create user 
         //how can i do list<users> =getAll(user); 
         //how can i do property=list<users>; 
         continue; 
        } 
        if (property.PropertyType.Name.Substring(0, 3) == "Int") 
         item.GetType().GetProperty(property.Name).SetValue(item, int.Parse(re[property.Name].ToString())); 
        else 
         switch (property.PropertyType.Name) 
         { 
          case "String": 
           item.GetType().GetProperty(property.Name).SetValue(item, re[property.Name].ToString()); 
           break; 
          case "Decimal": 
           item.GetType().GetProperty(property.Name).SetValue(item, decimal.Parse(re[property.Name].ToString())); 
           break; 
         } 
       } 
       list.Add(item); 
      } 
      if (!re.IsClosed) 
       re.Close(); 
      re.Dispose(); 
      SqlConnection.ClearAllPools(); 
      return list; 
     } 
     catch (Exception err) 
     { 
      throw new Exception(err.Message); 
     } 

    } 

Скажите, как я могу заполнить пользователь list<>. Я хочу отправить одного пользователя класса в getAll() для всех пользователей. Благодарю.

+0

Почему аргумент GetAll (объект MyClass) является объектом? – spark

+0

Потому что я палочка посылаю другой класс. – shahroz

+0

Вы хотите инициализировать «Список » и добавить элементы? –

ответ

0

Попробуйте следующий код, это может вам помочь.

if (property.PropertyType.Name.ToLower() == "list`1") 
{ 
    if (property.PropertyType.Name.ToLower() == "list`1") 
    { 
      var type = property.PropertyType; 
      var it = type.GetGenericArguments()[0]; 

      var users = Activator.CreateInstance(type); // list of user 
      var user = Activator.CreateInstance(it); //user 

      user.GetType().GetProperty("ID").SetValue(user, 1, null); 
      user.GetType().GetProperty("Name").SetValue(user, "Name1", null); 

      var add = type.GetMethod("Add"); 
      add.Invoke(users, new[] { user }); 
    } 
} 
+0

Я не могу получить доступ к классу User в классе DALTableIO. Я посылаю класс команды классу класса DALTableIO class.team со списком . – shahroz

+0

Я знаю только объект недвижимости shahroz

+0

X-TECH! Очень благодарен. Ты мой герой! – shahroz

Смежные вопросы