[seasar-dotnet:1628] Re: 基底FormクラスにDI対象フィールド+AOP対象でエラー

ikutirin [E-MAIL ADDRESS DELETED]
2010年 3月 24日 (水) 08:16:47 JST


ikutirinです。
ご返信ありがとうございます。

まず、
> スーパークラスのFormにAspect属性付きの
> コンポーネントのフィールド定義すると、
> 実行は問題ないけど、VisualStudioのデザイナで開けない
> 
> まとめるとこんな感じでしょうか。
その通りです。
> 「QuillControl」をお使いでしょうか?
QuillControlをスーパークラスのFormに貼り付けています。

> A. IXXXXServiceをインターフェースじゃなくてクラスで
> B. Aspect属性じゃなくてTransaction属性で
> C. "A" と "B" 両方で
> 
> で、同じ現象が発生するかどうか試して頂けますでしょうか?
> (もし、全てで発生するなら、要はAOP掛かったコンポーネント
> がダメってことになりますね)
AもBもCも同じ現象が発生しました。

> もしお使いでしたらそれを外し、代わりにmainメソッドなど、
> Formとは関係ない場所で自前でQuillInjector.Injectを呼び出すようにしてみていた 
> だけないでしょうか。
QuillInjectorを使用するとうまくいくかもしれませんが、
しかし、全てのFormにいわゆるおまじないを記述しなければならず、
できれば避けたいです。
どうしても解決しない場合に、試させていただきます。

> また、念のため、VisualStudioのバージョン(.NET自体のバージョンも)
> やエディションをお願いします。
VisualStudio2008 Professional SP1
.NET framework 3.5
で開発を進めております。

なんとか解決できないでしょうか。。。
よろしくお願いします。


[E-MAIL ADDRESS DELETED] wrote:

> ikutirinさん
> 
> 小谷です。
> 
> 「QuillControl」をお使いでしょうか?
> もしお使いでしたらそれを外し、代わりにmainメソッドなど、
> Formとは関係ない場所で自前でQuillInjector.Injectを呼び出すようにしてみていた 
> だけないでしょうか。
> (根本的な解決にはならないと思いますが・・・)
> ※参考
> http://s2container.net.seasar.org/ja/quill.html#di_quill
> 
> デザイナ上では呼ばれないはずの
> QuillControl#EndInit内でのInject呼び出しが行われているようなので。
> 
> ikutirin <[E-MAIL ADDRESS DELETED]>:
> > ikutirinです。
> 
> > 解決へのヒント、回答をよろしくお願いします。
> 
> 
> 
> > Seasar.Quil.dll:1.3.17.0、
> 
> > DBFlute:0.8.9.12
> 
> > で開発しています。
> 
> 
> 
> 
> 
> > S2Formを継承したFormを作成しました。(AAAFormとします)
> 
> > AAAFormを継承してFormを作成しました。(BBBFormとします)
> 
> 
> 
> > AAAForm内で、
> 
> > protected IXXXXService xxxService;
> 
> > とDI対象のフィールドを用意すると、
> 
> > BBBFormをVisualStudioのデザイナで表示できなくなります。
> 
> > 以下エラーがでます。
> 
> > ---
> 
> > メソッドが見つかりません:
> 
> > 'Void Seasar.Framework.Aop.Proxy.DynamicAopProxy..ctor(System.Type,
> 
> > Seasar.Framework.Aop.IAspect[], System.Collections.Hashtable)'
> 
> > ---
> 
> 
> 
> > IXXXXServiceにはAspect属性を設定しており、その属性を外すと
> 
> > エラーがでず、正常にデザイナで開くことができます。
> 
> 
> 
> > ためしに、
> 
> > BBBForm内に、
> 
> > protected IXXXXService xxxService;
> 
> > を書いてみましたが、エラーは発生しません。(当然ですね。。。)
> 
> > #AAAFormは常に、問題なくデザイナで開くことができます。
> 
> 
> 
> > S2Form→AAAForm→BBBFormという構成で、
> 
> > AAAForm内にAspect属性を指定したインターフェースのフィールドを作成したいの 
> > ですが、
> 
> > どのようにすればよいでしょうか。
> 
> > #実行は出来るのですが、VisualStudioのデザイナで開けなくなります。
> 
> 
> 
> > よろしくお願いします。
> 
> > _______________________________________________
> 
> > seasar-dotnet mailing list
> 
> > [E-MAIL ADDRESS DELETED]
> 
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> 



seasar-dotnet メーリングリストの案内