我正在努力完成一些本应该很容易实现的事情。比如说,我有一个汽车对象。
在这些代码行中,有一种基于对象成员未知的反射实现(这是唯一的原因吗?)。
这对于通用功能很好,但如果需要,我会为性能而放弃功能。我想知道为什么下面两个链接都使用了这种方法。
我是否可以简单地使用
有没有一种方法可以在不使用反射的情况下实现这种方法?
背景
任务是将一组对象简单地上传到数据库表中,
public class tblCarObj
{
public String Model;
public Int32 Year;
}
在这些代码行中,有一种基于对象成员未知的反射实现(这是唯一的原因吗?)。
这对于通用功能很好,但如果需要,我会为性能而放弃功能。我想知道为什么下面两个链接都使用了这种方法。
我是否可以简单地使用
MyCarReader<tblCarObj>
而不是 //for this instance.
private IEnumerator<T> enumerator = null;
//List of all public fields in <T>
private List<FieldInfo> fields = new List<FieldInfo>();
public MyGenericDataReader(IEnumerable<T> enumerator)
{
this.enumerator = enumerator.GetEnumerator();
//Find the enumerator of all public fields
foreach (FieldInfo fieldinfo in typeof(T).GetFields(
BindingFlags.Instance |
BindingFlags.Public))
{
fields.Add(fieldinfo);
}
}
有没有一种方法可以在不使用反射的情况下实现这种方法?
背景
任务是将一组对象简单地上传到数据库表中,
List<tblCarObj>
其中:
- 数据库表已准备好
- 数据库表与DataObject成员相匹配
- 两者在编译时均已知。
可以直接在SQLBulckCopy
上使用它,而不是像DataTable
这样更复杂的对象。
SqlDataReader
,我可以使用IDataReader
来完成,我们可以在这些示例中看到如何操作,如果您使用new List<aknownInitializedObject>
来提供数据而不是使用需要使用反射的泛型,那么它应该会更简单,因为我已经提供了成员信息。 - Jbob Johan