ValueInjecter and DataTable
我试图找出 ValueInjecter,以便我可以在我们自己开发的小 ORM 中使用它。因为我应该支持 DataRow 和 DataTable 映射,所以我正在尝试为这种类型实现映射器。老实说,文档还不够好,我想试一试。也许 Omu 或该库的其他用户会回答。
这是我的 DataRow 注入器
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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。我期望做的代码片段就像。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class DataTableInjector : ????? { protected override void Inject(DataTable source, IList< T > target) where T : class { // Do My Staff //return IList? |
我怎样才能做到这一点。
谢谢
~~~~~~这是我在Omu的帮助下编写的完整代码
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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) |
和你为
你也可以看到
请记住,
所以你将拥有:
1
2 |
实际上,在您的情况下,您将只使用从 DataTable 到
所以你可以这样做:
1
2 3 4 5 6 7 8 9 |
public class My< T > : ValueInjection
{ protected override void Inject(object source, object target) { var dt = source as DataTable; var t = target as IList< T >; … } } |
及用法:
1
|
list.InjectFrom<My<Foo>>(datatable):
|
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/269517.html