2016-06-19 11 views
1

このメソッドは、ここでの多くの質問に対する答えとして見つかったのですが、 "KnownSourceValueInjection"にエラーがあります。また、 "GetByName(...)"は機能していません。 "propertyinfo []"には、 "propertyinfo []"タイプの最初の引数を受け入れる "GetByName"の定義が含まれていません。 Webサービス。 私は以下を使用しています:"KnownSourceValueInjection"のタイプまたは名前が見つかりませんでした

  • 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

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); 
     } 
    } 
} 
関連する問題