/// <summary>
 /// ループ処理実行
 /// </summary>
 /// <param name="target">インジェクション対象オブジェクト</param>
 /// <param name="context">インジェクション状態管理</param>
 /// <param name="fields">インジェクション先として抽出したフィールドのコレクション</param>
 /// <param name="injectField">フィールドへのインジェクション実行コールバック Action&lt;object, FieldInfo, QuillInjectionContext&gt;</param>
 public virtual void ForEach(object target, QuillInjectionContext context, 
     IEnumerable<System.Reflection.FieldInfo> fields, QuillInjector.CallbackInjectField injectField)
 {
     foreach(var field in fields)
     {
         injectField(target, field, context);
     }
 }
 /// <summary>
 /// フィールド抽出
 /// </summary>
 /// <param name="target">インジェクション対象オブジェクト</param>
 /// <param name="context">インジェクション状態管理</param>
 /// <returns>抽出したフィールドのコレクション</returns>
 public virtual IEnumerable<System.Reflection.FieldInfo> Select(object target, QuillInjectionContext context)
 {
     return target.GetType().GetFields(context.Condition);
 }
 /// <summary>
 /// フィールド抽出
 /// </summary>
 /// <param name="target">インジェクション対象オブジェクト</param>
 /// <param name="context">インジェクション状態管理</param>
 /// <returns>抽出したフィールドのコレクション</returns>
 public virtual IEnumerable<System.Reflection.FieldInfo> Select(object target, QuillInjectionContext context)
 {
     var fields = target.GetType().GetFields(context.Condition);
     return fields.Where(fi => fi.FieldType.IsImplementationAttrAttached());
 }
 /// <summary>
 /// ループ処理実行
 /// </summary>
 /// <param name="target">インジェクション対象オブジェクト</param>
 /// <param name="context">インジェクション状態管理</param>
 /// <param name="fields">インジェクション先として抽出したフィールドのコレクション</param>
 /// <param name="callbackInjectField">フィールドへのインジェクション実行コールバック Action&lt;object, FieldInfo, QuillInjectionContext&gt;</param>
 public virtual void ForEach(object target, QuillInjectionContext context, IEnumerable<System.Reflection.FieldInfo> fields, 
     QuillInjector.CallbackInjectField callbackInjectField)
 {
     fields.AsParallel().ForAll(field => callbackInjectField(target, field, context));
 }
 /// <summary>
 /// フィールドへのインジェクション実行
 /// </summary>
 /// <param name="target">インジェクション対象のオブジェクト</param>
 /// <param name="fieldInfo">インジェクションするフィールド情報</param>
 /// <param name="context">インジェクション状態管理</param>
 public virtual void InjectField(object target, System.Reflection.FieldInfo fieldInfo, QuillInjectionContext context)
 {
     fieldInfo.SetValue(target, context.Container.GetComponent(fieldInfo.FieldType));
 }