vedo Simple Injector s' Contenitore ha questo methodIl Simple Injector ha un modo di registrarsi condizionale con la fabbrica di oggetti?
public void RegisterConditional<TService, TImplementation>(
Predicate<PredicateContext> predicate
)
Ma voglio usare il diverso oggetto dello stesso implementazione per servizio diverso, così che cosa sovraccarico metodo ho bisogno sarebbe simile a questa
public void RegisterConditional<TService>(
Func<TService> instanceCreator,
Predicate<PredicateContext> predicate
)
Ma il SimpleInjector non ce l'ha. Sto cercando di trovare i metodi dell'altro contenitore per registrare il creatore dell'istanza con le condizioni per il servizio. Ci sono altri modi in cui posso fare?
Oppure, è quello che sto cercando di fare non il buon design, quindi gli sviluppatori non lo implementano?
Modificato: Aggiunto esempio e la domanda più dettagliata.
Esempio
class CSVFileScanner
{
public CSVFileScanner(IFileLocator fileLocator) { }
}
class XMLFileScanner
{
public XMLFileScanner(IFileLocator fileLocator) { }
}
class DefaultLogFileLocator: ILogFileLocator
{
public DefaultLogFileLocator(string directoryPath, string searchPattern) { }
}
var locatorForCSVFileScanner = new DefaultLogFileLocator("C:\CSVLogDir", "*.csv")
var locatorForXMLFileScanner = new DefaultLogFileLocator("C:\XMLLogDir", "*.xml")
Dal codice sorgente di esempio, come posso registrarle per ottenere locatorForCSVFileScanner
oggetto passato al costruttore CSVFileScanner
quando CSVFileScanner
sempre creato e locatorForXMLFileScanner
oggetto passato al costruttore XMLFileScanner
quando XMLFileScanner
sempre creato ?
"Voglio usare il diverso oggetto dello stesso implementazione per servizio diverso". Puoi riformulare la tua domanda? Non capisco cosa vuoi. – Steven
@ Steven Ho modificato la domanda, cercando di spiegare cosa ho chiesto. – wrongite