3

Resolve の呼び出しで例外が発生します。

KernelException: Could not instantiate custom activator
Inner Exception:
{"Constructor on type 'MyProj.MyAdapter`1[[MyProj.MyBusinessObject, MyAsm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' not found."}

そこには間違いなくパブリックのパラメーターなしのコンストラクターがあります(実行時にリフレクションを使用してこれを確認しました)...だから、問題はそれが一般的であるという事実に関係している可能性があると思いますか? コンポーネント モデル オブジェクトを取得し、RequiresGenericArguments を true に設定しようとしましたが、うまくいきません。

どんな助けでも大歓迎です!ありがとう。

4

1 に答える 1

5

Windsor は、デフォルトのコンストラクターを使用してアクティベーターをインスタンス化していません。

新しいバージョンでは、より役立つ例外メッセージがスローされます。

Castle.MicroKernel.KernelException : Could not instantiate custom activator
  ----> System.ArgumentException : Type Castle.Windsor.Tests.ActivatorWithoutCorrectConstructor does not have a public constructor matching arguments of the following types:
Castle.Core.ComponentModel
Castle.MicroKernel.DefaultKernel
Castle.MicroKernel.ComponentInstanceDelegate
Castle.MicroKernel.ComponentInstanceDelegate

したがって、このようなコンストラクタが必要です

public YourActivator(ComponentModel model, IKernel kernel,
                                    ComponentInstanceDelegate onCreation,
                                    ComponentInstanceDelegate onDestruction)
于 2010-06-12T02:40:14.360 に答える