Ich möchte verschiedene Schnittstelle in verschiedenen Controller verwenden.Get unterschiedliche Schnittstelle in zwei Controller mit Autofac
public interface IMessenger {
Id {get; set;}
void Send();
}
Ich habe zwei Klassen implementieren zwei gleiche Schnittstelle.
public class SmsSender : IMessenger {
public Id {get; set;}
public void Send() {
//logic here
}
}
public class MailSender : IMessenger {
public Id {get; set;}
public void Send() {
//logic here
}
}
mit zwei Controllern:
public class HomeController : Controller {
private readonly IMessenger _messenger;
public HomeController(IMessenger messenger) {
_messenger = messenger;
}
}
public class Home2Controller : Controller {
private readonly IMessenger _messenger;
public HomeController(IMessenger messenger) {
_messenger = messenger;
}
}
Autofaq Setup:
builder.RegisterType<MailSender>().As<IMessenger>().InstancePerLifetimeScope();
builder.RegisterType<SmsSender>().As<IMessenger>().InstancePerLifetimeScope();
Wie kann ich SmsSender in Homecontroller erhalten und Mailsender in Home2Controller?
Sind Sie offen andere IOC-Container in Verwendung? Ich glaube, dass Ninject diese Eigenschaft hat –
Mögliches Duplikat von [Dependency injection type-selection] (http://stackoverflow.com/questions/34329203/dependency-injection-type-selection) – NightOwl888
[Es gibt eine ganze FAQ zu diesem Thema.] (http://autofac.readthedocs.io/de/latest/faq/select-by-context.html) –