J'ai une interface comme ceci:StructureMap - Scan - Interface générique avec la mise en œuvre de base et quelque chose de spécifique
interface IGenericSetupViewModel<T>
J'ai alors implemtation par défaut de cela, quelque chose comme ça
class GenericSetupViewModel<T> : IGenericSetupViewModel<T>
Pour certains classes spécifiques j'ai une implémentation spécifique comme ceci:
class ContractSetupViewModel : GenericSetupViewModel<Contract>
Maintenant je veux ferai StructureMap retourner l'instance correcte, lorsque vous demandez un
ObjectFactory.GetInstance<GenericSetupViewModel<Contract>();
Je voudrais obtenir ContractSetupViewModel retourné, lorsque vous demandez quoi que ce soit d'autre, je voudrais obtenir une instance de
GenericSetupViewModel<T>
J'ai essayé faire ceci:
StructureMap.ObjectFactory.Configure(x =>
{
x.Scan(y =>
{
y.TheCallingAssembly();
y.AddAllTypesOf(typeof(IGenericSetupViewModel<>));
y.ConnectImplementationsToTypesClosing(typeof(IGenericSetupViewModel<>));
});
});
Cependant il en résulte toujours me faire un GenericSetupViewModel et jamais ContractSetupViewModel. Je ne veux pas avoir à spécifier tous les viewmodels spécifiques donc est-ce que je peux obtenir cette analyse pour fonctionner?
Avez-vous essayé ce qui se passe si vous demandez un 'IGenericSetupViewModel'? –
flq
Même chose que si je demande GenericSetupViewModel –