<div dir="ltr">こんにちは<div><br></div><div>回答いただき、ありがとうございます。</div><div><br></div><div>taknb2nch様が言うようにQuillの理解で誤っていた部分がありましたので、</div><div>大変勉強になりました。</div><div><br></div><div>移行前プロジェクトでは、起動時にテーブルBhvクラスをすべてコンテナに登録するようにしており、</div><div>おそらく、竹内様の抽象クラスにするというのが、一番、現実的な方法かなと思いました。</div><div><br></div><div>><span style="font-size:14px">コンポーネントとなるクラスのコンストラクタにInject呼び</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"><br></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">取り急ぎ、返信させていただきます。</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">ご指摘に対して、的外れな回答をしているかもしれませんが、</span></div><div><span style="font-size:14px">宜しくお願い致します。</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016年6月8日 10:04 竹内学 <span dir="ltr"><<a href="mailto:mtakeuchi@ailesys.co.jp" target="_blank">mtakeuchi@ailesys.co.jp</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:"ms gothic",monospace">新谷さん</div><div class="gmail_default" style="font-family:"ms gothic",monospace"><br></div><div class="gmail_default" style="font-family:"ms gothic",monospace">こんにちは竹内です。</div><div class="gmail_default" style="font-family:"ms gothic",monospace"><br></div><div class="gmail_default" style="font-family:"ms gothic",monospace"><div class="gmail_default">> しかし、テーブルのBhvクラスをメンバ変数としてしまうと、</div><div class="gmail_default">> 全てのテーブルのBhvクラスをメンバ変数としてコンテナに登録する必要がでてきてしまいます。</div><div class="gmail_default"><br></div><div class="gmail_default">基本的には使用したい Bhv は全部メンバとして記述が必要になります。</div><div class="gmail_default"><br></div><div class="gmail_default">そこで、</div><div class="gmail_default">public abstract class AbstractService {</div><div class="gmail_default"> // 全ての Bhv を列挙</div><div class="gmail_default"> protect ATableBhv _aTableBhv;</div><div class="gmail_default"><div class="gmail_default"> protect BTableBhv _bTableBhv;</div><div> :</div><div> :</div></div><div class="gmail_default">}</div><div class="gmail_default"><br></div><div class="gmail_default">と抽象クラスを作成し、これを継承するようにします。</div><div class="gmail_default"><br></div><div class="gmail_default">新谷さんのパターンですと、TestBhvService は TestBase クラスを継承している様ですので、</div><div class="gmail_default"><br></div><div class="gmail_default">public class TestBase : AbstractService, ... {</div><div class="gmail_default">}</div><div class="gmail_default"><br></div><div class="gmail_default">の様に記述します。</div><div class="gmail_default"><br></div><div class="gmail_default">同様に Bhv を使いたいクラスは全部 AbstractService を継承元とすれば良いのです。</div><div class="gmail_default"><br></div><div class="gmail_default">御参考までに。</div><div class="gmail_default"><br></div><div class="gmail_default">p.s.</div><div class="gmail_default">dynamic 型は便利ですが、実行時にメンバが含まれているかどうかが判明するので、</div><div class="gmail_default">DBFlute の特徴の一つ、「データベースの構造変化に強い」をスポイルしてしまうと思います。</div><div class="gmail_default">複雑なプロジェクトであればあるほど、この特徴は重要になってきます。</div><div class="gmail_default"><br></div><div class="gmail_default">使わざるを得ない場合を除き使わない方が、開発スピードが上がることになると思います。</div><div class="gmail_default">滅多に通らないパスだったりすると、テストでなかなか発見できなかったりしますしね。</div><div class="gmail_default"><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016年6月7日 10:18 新谷将亮 <span dir="ltr"><<a href="mailto:ms630928s@gmail.com" target="_blank">ms630928s@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><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> /// <summary></div><div> /// コンストラクタ</div><div> /// </summary></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> /// <summary></div><div> /// マスタ取得</div><div> /// </summary></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></div></div><span class="">_______________________________________________<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></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div data-smartmail="gmail_signature"><div dir="ltr">竹内 学 <mailto:<a href="mailto:mtakeuchi@ailesys.co.jp" target="_blank">mtakeuchi@ailesys.co.jp</a>><br>株式会社エールシステム<br>〒384-0083 長野県小諸市大字市665-9<br>Phone: 0267-25-5990<br>Facsimile: 0267-26-1324</div></div>
</font></span></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>