找不到类型或名称“KnownSourceValueInjection”

时间:2016-06-19 23:06:09

标签: c# valueinjecter

我想知道为什么这个方法作为许多问题的答案在这里找不到,“KnownSourceValueInjection”中有错误。另外“GetByName(...)”不起作用,它说:“propertyinfo []”不包含“GetByName”的定义,接受类型为“propertyinfo []”的第一个参数可以找到。我正在研究一个Web服务。 我正在使用:

  • 使用Omu.ValueInjecter;
  • 使用Omu.ValueInjecter.Utils;
  • 使用Omu.ValueInjecter.Injections;

这是方法。

    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);
            }
        }
    }

1 个答案:

答案 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);
        }
    }
}