3
で抽象ベースコントローラとユニティ2 InjectionPropertyを使用して:私のコントローラの工場は次のようになります私は、次のベースコントローラ持っMVC
.RegisterType<BaseController>(new InjectionProperty[]
{
new InjectionProperty("FormsAuthentication", new ResolvedParameter<IFormsAuthentication>()),
new InjectionProperty("AccountRepository", new ResolvedParameter<IAccountRepository>())
});
::私はセットアップUnityへ次のコードを持って
public abstract class BaseController : Controller
{
public IFormsAuthentication FormsAuthentication { get; set; }
public IAccountRepository AccountRepository { get; set; }
}
を
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return (controllerType == null) ? base.GetControllerInstance(requestContext, controllerType) : container.Resolve<IController>(controllerType);
}
AccountRepositoryをベースコントロールから継承するコントローラから使用しようとするとこの設定は機能しません。私はコントローラでコンストラクタインジェクションをベースコントローラから継承しても問題はありませんが、ベースコントローラで動作するようにプロパティインジェクションを取得することはできません。なぜ誰が知っていますか?
Unity.MVC3と同じです - 派生したすべてのコントローラで基本プロパティを設定できますが、1つのベースのみでDRYソリューションは設定できません。 – StuartLC