Non sicuro se questo è possibile o no.È possibile utilizzare lo strumento Factory digitato per restituire l'implementazione in base al parametro (enum)?
Ho bisogno di restituire la corretta implementazione di un servizio basato su un valore enum. Così l'attuazione codificati a mano sarebbe simile:
public enum MyEnum
{
One,
Two
}
public class MyFactory
{
public ITypeIWantToCreate Create(MyEnum type)
{
switch (type)
{
case MyEnum.One
return new TypeIWantToCreate1();
break;
case MyEnum.Two
return new TypeIWantToCreate2();
break;
default:
return null;
}
}
}
Le implementazioni che vengono restituiti hanno dipendenze addizionali che dovranno essere iniettato attraverso il contenitore, in modo una fabbrica di laminati a mano non funziona.
E 'possibile, e se sì, come sarebbe la registrazione?
Cosa c'è di sbagliato con la registrazione quella fabbrica nel vostro contenitore, e invece di fare 'nuova Type1', basta chiamare nel contenitore? – Steven
Non voglio risolvere direttamente dal contenitore: non avrò accesso al contenitore a questo punto del codice. –
Rendi la parte di fabbrica della [Composition Root] (http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx) della tua applicazione (e falla dipendere da un'interfaccia 'IMyFactroy' che fa parte di l'applicazione). In tal caso, è sufficiente accedere al contenitore ([questo * non * è l'anti-pattern di Service Locator] (http://blog.ploeh.dk/2011/08/25/ServiceLocatorRolesVsMechanics.aspx)). Basta iniettare il contenitore nel costruttore della fabbrica e stai bene. – Steven