コントローラファクトリは次のようになります。
public class ControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
if (controllerType != null)
{
return (IController)ObjectFactory.GetInstance(controllerType);
}
return null;
}
}
StructureMap構成ドキュメント:
public class DependencyRegistry : Registry
{
protected override void configure()
{
Scan(x =>
{
x.Assembly("MyApp.Web");
x.Assembly("MyApp.Model");
x.Assembly("MyApp.DataAccess");
x.With<DefaultConventionScanner>();
});
base.configure();
}
}
デフォルトの規則を使用してStructureMapを構成する関数:
public void RegisterDependencies()
{
ObjectFactory.Initialize(InitializeStructureMap);
}
private void InitializeStructureMap(IInitializationExpression x)
{
x.AddRegistry<DependencyRegistry>();
}
コントローラの例:
public class MyController : Controller
{
private IMyRepository _repository;
public MyController (IRepository repository)
{
_repository = repository;
}
}
RegisterDependencies()関数を呼び出すことを忘れないでください...
これがお役に立てば幸いです。