Castello di Windsor registrazione automatica da due completamento diverso?
-
20-09-2019 - |
Domanda
container.Register(
AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly)
.WithService.FirstInterface());
Attualmente il codice qui sopra funziona bene se l'interfaccia sono anche nello stesso assembly ma sarà saltare in aria se IUserRepository è da un assembly diverso.
È registrazione automatica da due gruppi diversi possibili? Mi sto perdendo qualcosa qui?
Soluzione
Si, è possibile definire l'auto-registrazione in cui l'interfaccia è definita in un assembly diverso. Noi lo facciamo, anche se usiamo una sintassi leggermente diversa:
container.Register(AllTypes
.FromAssemblyContaining<ConfigurationService>()
.Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal))
.WithService
.FirstInterface()
.Configure(reg => reg.LifeStyle.PerWebRequest));
Non posso dire se il diverso utilizzo di API fa la differenza, ma presumo che non è così. Piuttosto, direi che la causa dell'errore si verifica è che forse l'assembly contenente l'interfaccia non è disponibile.
Controlla se Fusion può caricare il tipo da tale applicazione a tutti.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow