<div dir="ltr">みなさま<div>はじめまして、いつもお世話になります。pull requestをさせていただいた畑中です。<br>取込ありがとうございました。<br><br>さて、pull requestをしておいて非常に申し訳ないのですが<br>1.3.20においてInjectionMapを使った特殊なケースで不具合が出る場合がありますので<div>その報告と回避策のご相談をさせてください。<br><br>interface InterfaceA{<br>  void MethodA();<br>}<br><br>[Implementation]<br>public class ImplementsB : InterfaceA<br>{<br>  protected ImplementsC ImplementsC;<br>  public void MethodB()<br>  {<br>    this.ImplementsC.MethodC();<br>  }<br>}<br><br>というクラスがあり、<br>QuillInjector.GetInstance().InjectionMap.Add(typeof(InterfaceA), typeof(ImpelmentsB));<br>と登録しておきながら<br><br>[Implementation]<br>public class ExecutorC<br>{<br>  protected ImplementsB ImplementsB;<br>  public void Execute()<br>  {<br>    this.ImplementsB.MethodB(); <br>  }<br>}<br><br>上記のようにInterfaceAではなく<br>ImplmenetBを直接Injectしてもらう実装があると<br>このImplementsBインスタンスが正しく初期化されない場合があります。<br>具体的には<br>  ImplementsB.ImplementsCにインスタンスがInjectされない場合があります。</div><div>今回の変更でDynamicProxyインスタンスを共有したことに原因があると思いますが</div><div>完全には原因をつかめていません。</div><div><div><div><br></div><div>回避策として</div><div>public class ExecutorC<br>{<br>  protected InterfaceA ImplementsB;<br></div>・・・・</div><div><br>と変更することで問題なく動くことを確認しました。<br><br></div><div>・そもそもinterfaceを定義するならinterfaceでInjectしてもらうのが正しい<br>・DynamicProxyのメモリリークがクリティカルになっている<br>という理由でわれわれのプロジェクトは上記の回避策で対応していますが、<br></div><div>こちら、大きな問題になりそうでしょうか?</div><div><br></div><div>一度ご検討いただければと思います。</div><div><br></div><div>以上、よろしくお願いします。<br><br><br><div class="gmail_quote"><div dir="ltr">2015年9月25日(金) 0:33 kotani.k &lt;<a href="mailto:keikotani926@gmail.com" target="_blank">keikotani926@gmail.com</a>&gt;:<br></div></div></div></div><div dir="ltr"><div><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span style="font-size:14px">小谷(koyak)です。</span><br style="font-size:14px"><br style="font-size:14px"><span style="font-size:14px"><span>S2Container</span>/S2Dao 1.4.1, 1.3.20を<span>リリース</span>しました。</span><div><font face="arial, sans-serif" style="font-size:14px"><a href="http://s2container.net.seasar.org/ja/download.html" target="_blank">http://<span>s2container</span>.<span>net</span>.seasar.org/ja/download.html</a><br></font><div style="font-size:14px"><br></div><div style="font-size:14px">1.4.1は.NET4.0以上、1.3.20は.NET3.5以前で動作します。</div><div style="font-size:14px">また、動作はVisualStudio2013上で確認しています。</div><div style="font-size:14px"><br>変更点は下記の通りです。</div><div><br><div style="font-size:14px"><font face="arial, sans-serif"><span>S2Container</span>.<span>NET</span> 1.4.1、1.3.20</font></div><div style="font-size:14px"><font face="arial, sans-serif">*** Bug</font></div><div><span style="font-size:12.96px;color:rgb(0,0,0);font-family:verdana,arial,helvetica,sans-serif;line-height:16.848px">[Issue#7] QuillInjector#Destroy()で破棄されないオブジェクトがある不具合修正。</span></div><div><font color="#000000" face="verdana, arial, helvetica, sans-serif"><span style="font-size:12.96px;line-height:16.848px">(プルリクエストをいただいた分の反映です(ありがとうございました!))</span></font></div><div><br></div><div>*** Improvement</div><div><span style="color:rgb(0,0,0);font-family:verdana,arial,helvetica,sans-serif;font-size:12.96px;line-height:16.848px">[Issue#3] Quillの<a href="http://ODP.NET" target="_blank">ODP.NET</a>管理対象ドライバへの対応(1.4.1のみ)</span></div><div style="font-size:14px"><font face="arial, sans-serif"><br></font></div><div style="font-size:14px"><font face="arial, sans-serif">S2DaoNET 1.4.1、1.3.20</font></div><div style="font-size:14px">変更なし</div></div><div style="font-size:14px"><br></div><div style="font-size:14px">以上です。</div></div></div>
_______________________________________________<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>
</blockquote></div></div></div></div></div></div>