【发布时间】:2015-06-05 08:48:28
【问题描述】:
我知道这对你来说是一个简单的问题。但我是 C# 的初学者。
我想要实现的是创建一个方法来存储我模型中任何类型的对象列表。例如List<Person>。
我尝试过做这样的东西..
public IEnumerable<T> GetObjects<T>()
{
Type type = typeof(T);
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo item in properties)
{
// store properties
}
List<T> objects = new List<T>();
using (SqlConnection str = GetSqlConnection)
{
// retrieve data from db
//then store it to list of objects
}
return objects;
}
这将使我能够仅使用此方法检索数据。
编辑:
我已经设法创建了这个示例代码来从数据库中检索特定的表。
public IEnumerable<ItemBrand> getAllBrand
{
get
{
List<ItemBrand> brands = new List<ItemBrand>();
using (MySqlConnection strConn = getMySqlConnection())
{
string query = "SELECT * FROM tblbrand";
MySqlCommand cmd = new MySqlCommand(query, strConn);
strConn.Open();
MySqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
ItemBrand brand = new ItemBrand();
brand.brandID = Convert.ToInt32(rd["brandID"]);
brand.Name = rd["brandName"].ToString();
brands.Add(brand);
}
return brands;
}
}
}
目前我的解决方案中有多种方法。我很想在您的帮助下删除那些重复的代码。
【问题讨论】:
-
这里的问题是什么?显然您已经设法创建了一个
List<T>,问题是如何从数据库中的一行构造T的实例? -
您的实际问题是什么?您可以创建对象列表 (
List<object>)。 -
@LasseV.Karlsen 感谢您的回复。是的,从表中检索所有行,然后将其存储在我的 List
-
请说明您的实际问题是什么。你知道如何从数据库中执行的语句中检索行吗?你知道如何构造
T的实例吗?你知道如何通过反射为实例分配属性值吗? -
@LasseV.Karlsen 我已经更新了我的问题。谢谢
标签: c# reflection collections