Castle(Nugetから)でApiControllersとControllers(webapiではない)の両方を使用するプロジェクトで作業しています
internal class WebWindsorInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component
.For<RepositoryFactories>()
.ImplementedBy<RepositoryFactories>()
.LifestyleSingleton());
container.Register(Component
.For<IRepositoryProvider>()
.ImplementedBy<RepositoryProvider>()
.LifestylePerWebRequest());
container.Register(Component
.For<IProjUow>()
.ImplementedBy<ProjUow>()
.LifestylePerWebRequest());
container.Register(Classes
.FromAssemblyContaining<Api.CategoriesController>()
.BasedOn<IHttpController>()
.If(t => t.Name.EndsWith("Controller"))
.LifestylePerWebRequest());
container.Register(Classes
.FromAssemblyContaining<CategoriesController>()
.BasedOn<IController>()
.If(t => t.Name.EndsWith("Controller"))
.LifestylePerWebRequest());
}
}
これは global.asax (Application_Start) にあります。
var container = new WindsorContainer().Install(new WebWindsorInstaller());
GlobalConfiguration.Configuration.DependencyResolver = new WindsorDependencyResolver(container);
そして、これは CategoriesController の Controller コンストラクターです
public class CategoriesController : ControllerBase
{
public CategoriesController(IProjUow uow)
{
Uow = uow;
}
}
そして ControllerBase は Controller を継承します
ApiController は次のように定義されます。
public abstract class ApiControllerBase : ApiController
{
protected IProjUow Uow { get; set; }
}
public class CategoriesController : ApiControllerBase
{
public CategoriesController(IProjUow uow)
{
Uow = uow;
}
}
ApiController は正常に動作しますが、もう一方は次のように述べています。
このオブジェクトにはパラメーターなしのコンストラクターが定義されていません。
なんで?
前もって感謝します!ギレルモ。