关于 c#:ValueInjecter 和 DataTable
ValueInjecter and DataTable
我试图找出 ValueInjecter,以便我可以在我们自己开发的小 ORM 中使用它。因为我应该支持 DataRow 和 DataTable 映射,所以我正在尝试为这种类型实现映射器。老实说,文档还不够好,我想试一试。也许 Omu 或该库的其他用户会回答。
这是我的 DataRow 注入器
|
public class DataRowInjection: KnownSourceValueInjection<DataRow>
{ protected override void Inject(DataRow source, object target) { for (var i = 0; i < source.ItemArray.Count(); i++) { //TODO: Read from attributes or target type var value = source.ItemArray[i]; activeTarget.SetValue(target, value); |
这很好用。所以这里的问题是我如何为 DataTable 实现它并返回 Ienumarable 或 IList。我期望做的代码片段就像。
|
public class DataTableInjector : ?????
{ protected override void Inject(DataTable source, IList< T > target) where T : class { // Do My Staff //return IList? |
我怎样才能做到这一点。
谢谢
~~~~~~这是我在Omu的帮助下编写的完整代码
|
public class DataTableInjection< T > : ValueInjection where T : new()
{ protected override void Inject(object source, object target) { var dt = source as DataTable; var t = target as IList< T >; foreach (DataRow dr in dt.Rows) |
相关讨论
- 太棒了:),看起来很简单
和你为
你也可以看到
请记住,
所以你将拥有:
|
var list = new List< T >();
list.InjectFrom<MyFromDataTableInj>(dataTable) |
实际上,在您的情况下,您将只使用从 DataTable 到
所以你可以这样做:
|
public class My< T > : ValueInjection
{ protected override void Inject(object source, object target) { var dt = source as DataTable; var t = target as IList< T >; ... } } |
及用法:
|
list.InjectFrom<My<Foo>>(datatable):
|
相关讨论
- 我设法完成了我想做的事情并编辑了问题。再次感谢。