очень новый для Structure-Map.пытаясь понять, как это работает и как я могу извлечь из этого выгоду.
я до сих пор получил это ..
Global.asax.cs:
IContainer container = new Container(x =>
{
x.For<IControllerActivator>().Use
<StructureMapControllerActivator>();
x.For<IUserRepo>().Use<UserRepo>();
});
DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
StructureMapControllerActivator:
public class StructureMapControllerActivator : IControllerActivator
{
private readonly IContainer _container;
public StructureMapControllerActivator(IContainer container )
{
this._container = container;
}
public IController Create(RequestContext requestContext, Type controllerType)
{
return _container.GetInstance(controllerType) as IController;
}
}
StructreMapDependencyResolver:
private readonly IContainer _container;
public StructureMapDependencyResolver(IContainer container )
{
this._container = container;
}
public object GetService(Type serviceType)
{
object instance = _container.TryGetInstance(serviceType);
if(instance == null && !serviceType.IsAbstract)
{
_container.Configure(c => c.AddType(serviceType,serviceType));
instance = _container.TryGetInstance(serviceType);
}
return instance;
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _container.GetAllInstances(serviceType).Cast<object>();
}
}
Мой аккаунтКонтроллер:
public class AccountController : Controller
{
private readonly IUserRepo _userRepo;
private AccountController()
{
_userRepo = ObjectFactory.GetInstance<IUserRepo>();
}
public ActionResult Login()
{
return View();
}
}
Код и описание ошибки:
Код исключения StructureMap: 202 Не определен экземпляр по умолчанию для PluginFamily MBP_Blog.Controllers.AccountController MBP-Blog, версия= 1.0.0.0, Культура = нейтральная, PublicKeyToken = null
У меня есть имя интерфейса: IUserRepo и имя хранилища: UserRepo
, пожалуйста, помогите, когда я пытаюсь Google, но я не могу найтилюбое решение в течение первых 3 страниц.
Новая ошибка после использования кода @ Мартина:
Код исключения StructureMap: 180 StructureMap не может создавать объекты класса MBP_Blog.Controllers.AccountController, MBP-Blog, Версия = 1.0.0.0, Культура = Нейтral, PublicKeyToken = null, потому что не найден публичный конструктор.