MVC3 プロジェクトの IOC コンテナーに spring を使用しています。IUserIdentity インターフェイスにコンストラクターが依存する基本コントローラーを作成しようとしています。抽象クラスのアプリケーション コンテキスト ファイルでコンストラクターの依存関係を 1 回定義したいと考えており、Spring が派生クラスごとにそれを注入できることを望んでいました。
public abstract class ControllerBase : Controller
{
private readonly IUserIdentity _userContext;
public ControllerBase(IUserIdentity userContext)
{
_userContext = userContext;
}
}
public class ChildController : ControllerBase
{
private readonly IChildDependency _childService;
public ChildController(IUserIdentity userContext, IChildDependency childService)
: base(userContext)
{
_childService= childService;
}
}
すべての派生クラスの UserIdentity を再定義せずに、次のようなものを定義する方法があることを望んでいました-(それがどのように機能するかはわかりません)。
<object id="ControllerBase" abstract="true" singleton="false" >
<constructor-arg index="0">
<ref object="DefaultUserIdentity"/>
</constructor-arg>
</object>
<object id="ChildController" singleton="false" >
<constructor-arg index="1" >
<ref object="ConcreteChildDependency" />
</constructor-arg>
</object>
予想通り、このようなことをすると、Spring は派生 (ChildController) クラスの最初の引数に何を入れればよいかわかりません。