Ich möchte Factory-Muster in Autofac implementieren. Dies ist, wie es in Ninject Geographie:Factory-Muster in Autofac
Bind<ICarFilter>().To<CarFilter >();
Bind<IBikeFilter>().To<BikeFilter>();
Bind<IFilterFacade>().ToFactory().InSingletonScope();
Dies ist ein definitnion von IFilterFacade
public interface IFilterFacade
{
ICarFilter CreateCarFilter();
IBikeFIlter CreateBikeFilter();
}
Wenn ich eine Instanz von CarFilter Art will, alles, was ich tun muß, ist der folgende:
public class HomeController(IFilterFacade filterFacade)
{
FilterFacade = filterFacade;
}
public IFilterFacade FilterFacade { get;set; }
public ActionResult Index()
{
var bikeFilter = FilterFacade.CreateBikeFilter();
}
Jedes Beispiel wie man das in AutoFac macht. Ich habe die AutoFac-Dokumentation überprüft, konnte aber die Antwort oder das Beispiel nicht finden.
Ich bin nicht vertraut mit Ninject (Bit ich mit Autofac bin), können Sie bitte das Verhalten, das Sie mit Ninject erklären hatte? Hat Ninject die IFilterFacade-Schnittstelle für Sie dynamisch implementiert? Oder hast du es selbst implementiert? –
@ felix-b Ja, es wird dynamisch von Ninject implementiert. –
Autofac hat keine solche Funktion, AFAIK. Mit Autofac können Sie IComponentContext im Konstruktor Ihres Controllers empfangen. Sie können dann einzelne Komponenten aus diesem IComponentContext auflösen, z. context.Resolve(). Verglichen mit diesem Ansatz ist es für Sie wichtig, die Fassadenschnittstelle zu verwenden. –