[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 メーリングリストの案内