<div dir="ltr"><div>新谷さん</div><div><br></div><div><br></div><div>こんにちは、taknb2nchです。</div><div>無事にDB接続できたようで良かったです。</div><div><br></div><div><br></div><div>&gt;どこで、対象のクラス(今回の場合、テーブルBhvクラス)をQuillContainerに登録すればよいのでしょうか?</div><div>自分で登録はしません。</div><div><br></div><div>クラスやインターフェイスにImplementation属性をつけることで</div><div>Quillコンテナでの管理対象になります。</div><div>必要に応じてQuillがインスタンスの生成、コンテナへの登録を行ってくれます。</div><div><br></div><div>以下をもう一度お読みななるといいと思います。</div><div><a href="http://s2container.net.seasar.org/ja/quill.html#di_quill">http://s2container.net.seasar.org/ja/quill.html#di_quill</a></div><div><br></div><div><br></div><div>ご提示のソースコードですと、</div><div>QuillInjector.GetInstance().Inject(this);</div><div>としたタイミングで、</div><div>protected テーブルBhvクラス bhv に</div><div>Quillがインスタンスをセットしてくれます。</div><div><br></div><div>ですので、</div><div>GetK010Infoメソッドを以下のようにするだけで動作すると思うのですが・・・。</div><div><br></div><div>public テーブルEntityクラス GetK010Info(int intNumber)</div><div>{</div><div>    テーブルCBクラス cb = new テーブルCBクラス();</div><div>    cb.Query().Setキー_Equal(intNumber);</div><div><br></div><div>    return bhv.SelectEntity(cb);</div><div>}</div><div><br></div><div>ちなみに私ならこう書きます。(動作検証はしてません)</div><div><a href="https://gist.github.com/taknb2nch/3d356cc2d74fc9deae8fde7b2739769b">https://gist.github.com/taknb2nch/3d356cc2d74fc9deae8fde7b2739769b</a></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016年6月7日 13:55 新谷将亮 <span dir="ltr">&lt;<a href="mailto:ms630928s@gmail.com" target="_blank">ms630928s@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">志水様<div><br></div><div>ご回答いただき、ありがとうございます。</div><div><br></div><div>説明不足な点があり、申し訳ございません。</div><div><br></div><div><span style="font-size:14px">テーブルEntityクラス</span><br></div><div><span style="font-size:14px">テーブルBhvクラス</span><br></div><div><span style="font-size:14px">テーブルCBクラス</span><span style="font-size:14px"><br></span></div><div><br></div><div><span style="font-size:14px">はDBFluteにより、自動生成されるクラスになります。</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">書き方もわかりづらかったのですが、</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">上記のクラスは</span></div><div><span style="font-size:14px">テーブルA Entityクラス</span></div><div><span style="font-size:14px">テーブルB</span><span style="font-size:14px"> Entityクラス</span></div><div><span style="font-size:14px">テーブルA</span><span style="font-size:14px"> Bhv</span><span style="font-size:14px">クラス</span></div><div><span style="font-size:14px">  ・</span></div><div><span style="font-size:14px">  ・</span></div><div><span style="font-size:14px">  ・</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">のようにテーブルごとに生成されます。</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">dynamicについては、知りませんでした。</span></div><div><span style="font-size:14px">ありがとうございます。</span></div><div><br></div><div><span style="font-size:14px">さっそく調べてみました。</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">========================================</span></div><div><span style="font-size:14px"><br></span></div><div><div><span style="font-size:14px">    private dynamic Bhv(dynamic bhv, dynamic cb)</span></div><div><span style="font-size:14px">    {</span></div><div><span style="font-size:14px">      return bhv.SelectEntity(cb);</span></div><div><span style="font-size:14px">    }</span></div></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">============================</span><span style="font-size:14px">============</span></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">上記のようなメソッドを作成し、</span></div><div><span style="font-size:14px">呼び出し側からbhvとcbを渡すということだと思うのですが、</span></div><div><br></div><div><span style="font-size:14px">実際には、</span>GetK010Infoを画面側から呼び出しています。</div><div>⇒呼び出し側は</div><div><br></div><div><div> QuillInjector injector = QuillInjector.GetInstance();</div><div> QuillContainer container = injector.Container;</div></div><div><br></div><div> QuillComponent BhvServiceComponent = container.GetComponent(typeof(TestBhvService));<br></div><div><div> TestBhvService BhvService = (TestBhvService)BhvServiceComponent.GetComponentObject(typeof(TestBhvService));</div></div><div><br></div><div> <span style="font-size:14px">テーブルEntityクラス entity = BhvService.GetK010Info(2);</span><br></div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">のように記述しており、移行作業ということで、</span></div><div><span style="font-size:14px">こちらをできる限り変更したくありません。</span></div><div><br></div><div>※dynamicの解釈が間違っていたらすいません。<br></div><div><br></div><div>現状、悩んでいるのは、</div><div><span style="font-size:14px"><br></span></div><div><span style="font-size:14px">QuillInjector.GetInstance().</span><span style="font-size:14px">Inject(this); </span><span style="font-size:14px">の時点で、</span></div><div><blockquote type="cite"><div dir="ltr">protected テーブルABhvクラス bhv;</div><div dir="ltr">protected テーブルBBhvクラス bhv;<br></div><div dir="ltr"><br></div></blockquote><div>のようにメンバ変数に定義していないと、</div><div>コンテナに登録されなくなってしまいます。</div><div><br></div><div><br></div><div>また、<span style="font-size:14px">public テーブルEntityクラス </span><span style="font-size:14px">GetK010Info(int intNumber)の</span></div><div><span style="font-size:14px">メソッドはテーブル単位に作成しており、</span></div><div><span style="font-size:14px">引数もselectしたい条件の引数の為、メソッドごとに違っています。</span></div></div><div><span style="font-size:14px"><br></span></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016年6月7日 11:20 志水正幸 <span dir="ltr">&lt;<a href="mailto:ie2m-smz@asahi-net.or.jp" target="_blank">ie2m-smz@asahi-net.or.jp</a>&gt;</span>:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>こんにちは。<br>
      志水です。<br>
      <br>
      DB接続できるようになってよかったですね。<br>
      <br>
      質問の件ですが<br>
      私はC#独学&一人で開発なので<br>
      インターフェースとか難しいことはわからないし<br>
      使わないので、やりたいことがイマイチわかってないかもで<br>
      アレですが・・・<br>
      <br>
      &gt;protected テーブルBhvクラス bhv;<br>
      の「テーブルBhv」を<br>
      「dynamic」にしとけばテーブル単位に作らなくてもいいと思うんですが。。。<br>
      ※前スレでは、たしか新谷さんはFramework3.5からの移行だったと思うので<br>
       もしかしたら知らないかもしれませんが<br>
       dynamicはFramework4.0から追加されています。<br>
       結構便利な型ですよ。<br>
      <br>
      <br>
      &gt;    public テーブルEntityクラス GetK010Info(int intNumber)<br>
      のメソッドはテーブル単位に作るんですか?<br>
      それともキーが同じ「テーブルのEntity呼出しの共通メソッドですかね?<br>
      あれ?でも、<br>
      「テーブルCBクラス cb = new テーブルCBクラス();」があるからテーブル単位のメソッド?<br>
      やっぱり、難しいことはわからない~(笑)<br>
      けど、 消すことを考えるより、dynamic使ってゴニョゴニョすればいいようにおもいます。<br>
      <br>
      <br>
      すいません、的外れの場合はスルーしてください(^ ^;)<br>
      <br>
      以上<br>
      <br>
      <br>
      <br>
    </div>
    <blockquote type="cite"><div><div>
      <div dir="ltr">こんにちは、新谷です。
        <div><br>
        </div>
        <div>以前質問させていただいた、DB接続について、</div>
        <div>正しく動作するようになりました。</div>
        <div>ありがとうございます。</div>
        <div><br>
        </div>
        <div>今回は、DBFlute+Quillの使用について、質問させていただきます。</div>
        <div><br>
        </div>
        <div>環境</div>
        <div>・.NET Framework4.6.1<br>
        </div>
        <div>・DBFlute.NET:dbflute-0.8.9.59</div>
        <div>・<a href="http://s2container.net" target="_blank">s2container.net</a>:1.4.1</div>
        <div><br>
        </div>
        <div>下記のようなソースがあります。<br>
        </div>
        <div><br>
        </div>
        <div>===================================================</div>
        <div>
          <div>using Core.DBFlute.CBean;</div>
          <div>using Core.DBFlute.ExBhv;</div>
          <div>using Core.DBFlute.ExEntity;</div>
        </div>
        <div><br>
        </div>
        <div>
          <div>  [Implementation(typeof(TestBhvService))]</div>
          <div>  public interface ITestBhvService<br>
          </div>
          <div>  {</div>
          <div>    テーブルEntityクラス GetK010Info(int intNumber);</div>
          <div>  }</div>
          <div><br>
          </div>
          <div>  public class TestBhvService : TestBase, ITestBhvService</div>
          <div>  {</div>
          <div> QuillContainer container;<br>
          </div>
          <div><br>
          </div>
          <div>
            <div>    /// &lt;summary&gt;</div>
            <div>    /// コンストラクタ</div>
            <div>    /// &lt;/summary&gt;</div>
          </div>
          <div>    public TestBhvService()</div>
          <div>    {</div>
          <div>
            <div>      QuillInjector injector =
              QuillInjector.GetInstance();</div>
            <div>      container = injector.Container;</div>
          </div>
          <div>      QuillInjector.GetInstance().Inject(this);</div>
          <div>    }<br>
          </div>
          <div><br>
          </div>
          <div>    protected テーブルBhvクラス bhv;   ←この行が削除できないか?</div>
          <div><br>
          </div>
          <div>    /// &lt;summary&gt;</div>
          <div>    /// マスタ取得</div>
          <div>    /// &lt;/summary&gt;</div>
          <div>    public テーブルEntityクラス GetK010Info(int intNumber)</div>
          <div>    {</div>
          <div>      QuillComponent component =
            container.GetComponent(typeof(テーブルBhvクラス));</div>
          <div><br>
          </div>
          <div>      テーブルBhvクラス bhv =
            (テーブルBhvクラス)component.GetComponentObject(typeof(テーブルBhvクラス));</div>
          <div><br>
          </div>
          <div>      テーブルCBクラス cb = new テーブルCBクラス();</div>
          <div><br>
          </div>
          <div>      cb.Query().Setキー_Equal(intNumber);</div>
          <div><br>
          </div>
          <div>      return bhv.SelectEntity(cb);</div>
          <div>    }</div>
          <div>  }</div>
        </div>
        <div><br>
        </div>
        <div>===================================================<br>
        </div>
        <div><br>
        </div>
        <div>上記ソースでは正常に動作します。</div>
        <div><br>
        </div>
        <div>しかし、テーブルのBhvクラスをメンバ変数としてしまうと、</div>
        <div>全てのテーブルのBhvクラスをメンバ変数としてコンテナに登録する必要がでてきてしまいます。</div>
        <div><br>
        </div>
        <div>DBFluteもQuillに対応しているため、<br>
        </div>
        <div>そのようなことはしなくても良いと思っているのですが、</div>
        <div>S2ContainerのようにDBFlute.diconも使用しないため、</div>
        <div>どこで、対象のクラス(今回の場合、テーブルBhvクラス)をQuillContainerに登録すればよいのでしょうか?</div>
        <div>(コンストラクタでコンテナへの登録をし、「GetK010Info」内でコンテナから取り出せると思っております。)</div>
        <div><br>
        </div>
        <div>DBFluteの質問をこのメーリングリストに送るのは適切ではないかもしれませんが、</div>
        <div>可能であれば、教えていただけませんでしょうか。</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
seasar-dotnet mailing list
<a href="mailto:seasar-dotnet@ml.seasar.org" target="_blank">seasar-dotnet@ml.seasar.org</a>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  <br> <table style="border-top:1px solid #d3d4de">
        <tbody><tr>
      <td style="width:55px;padding-top:18px"><a href="https://www.avast.com/sig-email?utm_medium=email&amp;utm_source=link&amp;utm_campaign=sig-email&amp;utm_content=emailclient" target="_blank"><img src="https://ipmcdn.avast.com/images/2016/icons/icon-envelope-tick-round-orange_184x116-v1.png" height="29px"></a></td>
                <td style="width:470px;padding-top:17px;color:#41424e;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">ウイルス フリー。 <a href="https://www.avast.com/sig-email?utm_medium=email&amp;utm_source=link&amp;utm_campaign=sig-email&amp;utm_content=emailclient" style="color:#4453ea" target="_blank">www.avast.com</a>                 </td>
        </tr>
</tbody></table>
</div>

<br>_______________________________________________<br>
seasar-dotnet mailing list<br>
<a href="mailto:seasar-dotnet@ml.seasar.org" target="_blank">seasar-dotnet@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet" rel="noreferrer" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a><br>
<br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
seasar-dotnet mailing list<br>
<a href="mailto:seasar-dotnet@ml.seasar.org">seasar-dotnet@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet" rel="noreferrer" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a><br>
<br></blockquote></div><br></div>