我想知道为什么这个方法作为许多问题的答案在这里找不到,“KnownSourceValueInjection”中有错误。另外“GetByName(...)”不起作用,它说:“propertyinfo []”不包含“GetByName”的定义,接受类型为“propertyinfo []”的第一个参数可以找到。我正在研究一个Web服务。 我正在使用:
这是方法。
public class ReaderInjection : KnownSourceValueInjection<IDataReader>
{
protected override void Inject(IDataReader source, object target)
{
for (var i = 0; i < source.FieldCount; i++)
{
var activeTarget = target.GetProps().GetByName(source.GetName(i), true);
if (activeTarget == null) continue;
var value = source.GetValue(i);
if (value == DBNull.Value) continue;
activeTarget.SetValue(target, value);
}
}
}
答案 0 :(得分:1)
使用KnownSourceInjection,它在新版本中重命名;对于ReaderInjection,请参阅源here
public class ReaderInjection : KnownSourceInjection<IDataReader>
{
protected override void Inject(IDataReader source, object target)
{
for (var i = 0; i < source.FieldCount; i++)
{
var trgProp = target.GetType().GetProperty(source.GetName(i), BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
if (trgProp == null) continue;
var value = source.GetValue(i);
if (value == DBNull.Value) continue;
trgProp.SetValue(target, value);
}
}
}