molto nuova per Structure-Map. cercando di capire come funziona e come posso trarne beneficio.Errore StructureMap: nessuna istanza predefinita definita per PluginFamily
ho ottenuto questo finora ..
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>();
}
}
mio AccountController:
public class AccountController : Controller
{
private readonly IUserRepo _userRepo;
private AccountController()
{
_userRepo = ObjectFactory.GetInstance<IUserRepo>();
}
public ActionResult Login()
{
return View();
}
}
Codice errore & Descrizione:
StructureMap Exception Code: 202 No Default Instance defined for PluginFamily MBP_Blog.Controllers.AccountController MBP-Blog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
ho un nome di interfaccia: IUserRepo e un nome repository: UserRepo
prega aiutare a s Provo a google ma non trovo alcuna soluzione entro le prime 3 pagine.
Nuovo errore dopo aver usato @ il codice di Martin:
StructureMap Exception Code: 180 StructureMap cannot construct objects of Class MBP_Blog.Controllers.AccountController, MBP-Blog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null because there is no public constructor found.
@ Martin .. grazie per la vostra answer..i provato ad utilizzare il vostro method..but ancora sto ottenendo l'errore. per favore guarda l'errore aggiornato .. –
SIAMO SPIACENTI !!! - Rendi pubblico il costruttore – Martin
grazie ... in qualche modo l'ho fatto funzionare ... non so se è una buona pratica per il tuo aiuto..o lo uso o meno ... farò un'altra domanda su quello ... –