首页 / C# / 如何在C#中创建未知/通用类型的列表?
如何在C#中创建未知/通用类型的列表?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在C#中创建未知/通用类型的列表?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2051字,纯文字阅读大概需要3分钟。
内容图文
![如何在C#中创建未知/通用类型的列表?](/upload/InfoBanner/zyjiaocheng/664/b98a6a19c14846b6993e3828f2a5086a.jpg)
我注意到我一遍又一遍地做同样的事情,并且想要创建一个更通用的方法来将行从数据表转换为特定的类.
由于我没有使用泛型类型的经验,因此很难知道如何搜索想要的内容,但我会尽力进行解释.
我创建了此类:
public class Class1
{
public Guid? Id{ get; set; }
public string Text1{ get; set; }
public string Text2{ get; set; }
public int TheNumber{ get; set; }
}
然后,我从代表Class1的数据库中获取数据.我以DataTable的形式返回结果.数据行列中的名称与我的类中的名称完全相同,因此尽管我可以在通用方法中以某种方式使用它们来创建Class1的实例.
在这个时候,我创建这样的实例:
public static Class1 AssembleClass1(DataTable dtInfo)
{
Class1 obj = null;
if (dtInfo != null)
{
DataRow dr = dtInfo.Rows[0];
obj = new StrategicObjectives();
obj.Id= (Guid)dr["Id"];
obj.Text1 = dr["Id"].ToString();
obj.Text2 = dr["Id"].ToString();
obj.TheNumber = (int)dr["TheNumber"];
}
return obj;
}
现在,我要做的是创建一个通用的方法,该方法采用dataTable和Class1的类型(由于我的项目中还有许多其他类,所以我希望能够做到这一点).
然后,它应该创建Class1类型的列表,并迭代Class1的参数,在数据表的行中找到相应的数据列,并将正确的datarow值分配给Class1的正确参数.
我猜它还需要检查Class1的每个参数的类型以正确转换datarow列类型.
我本人只走了这么远,但我不知道它是否正确,也不知道如何继续..:
public static List<T> AssembleItem<T>(DataTable dtItems)
{
List<T> items = null;
if (dtItems != null)
{
items = new List<T>();
foreach (DataRow dr in dtItems.Rows)
{
object item = (T)Activator.CreateInstance(typeof(T));
}
}
return items;
}
希望有人可以帮助我,请问我是否需要更多信息.
解决方法:
您可以使用反射来获取类的属性名称并填充它们.
public static List<T> AssembleItem<T>(DataTable dtItems) where T : new()
{
List<T> items = null;
if (dtItems != null)
{
items = new List<T>();
foreach (DataRow dr in dtItems.Rows)
{
T item = new T();
foreach (DataRow dr in dtItems.Rows)
{
T item = new T();
Type t = typeof (T);
foreach (var property in t.GetProperties(BindingFlags.Public))
{
var propertyname = property.Name;
//var data = ...get data from row in database with same column name as propertyname
property.SetValue(item,data);
}
// populate item from dr
items.Add(item);
}
}
return items;
}
}
内容总结
以上是互联网集市为您收集整理的如何在C#中创建未知/通用类型的列表?全部内容,希望文章能够帮你解决如何在C#中创建未知/通用类型的列表?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。