从遗留系统迁移到 ValueInjecter
我们有一个自定义对象扩展方法来处理以下内容。
- 源是
DataRow
目标是class
。 - 源是
DataTable
目标是List
- 源是
class
目标是class
- 源是
List< ;class>
目标是List
我发现 ValueInjecter 和DataTable 这样我就可以处理 DataRow 和 DataTable。
现在我已经到了将它们粘合在一起的阶段了。
这是我尝试过的。
public static class ObjectExtensions
{
public static void OldFill(this object fillMe, object sourceObject)
{
Type sourceType = sourceObject.GetType();
Type fillType = fillMe.GetType();
switch (sourceType.Name)
{
case "DataRow":
fillMe.InjectFrom<DataRowInjection>(sourceObject);
break;
case "DataTable":
fillMe.InjectFrom<DataTableInjection<fillType>>(sourceObject);
break;
default:
fillMe.InjectFrom(sourceObject);
break;
}
}
}
不确定如何获得正确的 fillType
以使代码正常工作。
因为这是遗留代码,我不想更改扩展签名。
We had a custom object extension method that would handle the following.
- Source is
DataRow
target isclass
. - Source is
DataTable
target is aList<class>
- Source is
class
target isclass
- Source is
List<class>
target isList<class>
I found ValueInjecter and DataTable so I can handle a DataRow and DataTable.
So I am to the step where I am gluing it all together.
Here is what I tried.
public static class ObjectExtensions
{
public static void OldFill(this object fillMe, object sourceObject)
{
Type sourceType = sourceObject.GetType();
Type fillType = fillMe.GetType();
switch (sourceType.Name)
{
case "DataRow":
fillMe.InjectFrom<DataRowInjection>(sourceObject);
break;
case "DataTable":
fillMe.InjectFrom<DataTableInjection<fillType>>(sourceObject);
break;
default:
fillMe.InjectFrom(sourceObject);
break;
}
}
}
Not sure how to get the right fillType
to make the code work right.
Because this is legacy code I do not want to change the extension signature.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道答案,但我可以说
DataTableInjection
无法编译。您需要使用反射来进行绑定,如下所示:I don't know the answer, but I can say
DataTableInjection<fillType>
won't compile. You'd need to use Reflection to do the binding, something like this: