Comment définir un constructeur par défaut par code en utilisant StructureMap?
Je ne peux pas comprendre comment définir le constructeur par défaut (quand il existe des surcharges) pour un type de StructureMap (version 2.5) par code.
Je veux obtenir une instance d'un service et le conteneur a pour injecter un Linq2Sql contexte de données d'instance.
J'ai écrit cela dans mon programme d'amorçage de la méthode :
ForRequestedType<MyDataContext>().TheDefault.Is.OfConcreteType<MyDataContext>();
Quand je lance mon application, j'ai eu cette erreur :
StructureMap Code D'Exception: 202
Aucune Instance par Défaut définie pour PluginFamily MyNamespace.Les données.SqlRepository.MyDataContext, MyNamespace.De données, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Si j'commentaire de tous les Linq2Sql généré contructors que je n'ai pas besoin, il fonctionne très bien.
Mise à jour : Oh, et j'ai oublié de dire que je ne voudrais pas utiliser le [StructureMap.DefaultConstructor]
attribut.
source d'informationauteur Cyril Bioley
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier un constructeur avec la ConstructedBy(). Veuillez essayer ceci:
Cela a fonctionné pour moi.
Je suis en supposant que vous auriez également besoin de définir la durée de vie des objets (InstanceScope) si vous utilisez Linq2Sql. Je suggérerais à l'aide de ce code, car il vous donne un peu plus de souplesse.
Avec ce code, vous pouvez également injecter des interfaces définitions dans le MyDataContext constructeur comme ce
N'oubliez pas de définir le type de béton avec StructureMap pour votre IDatabaseFactory instance.
Je ne suis pas sûr de savoir comment /si cela peut être fait avec l'interface fluide /DSL interne. Vous pouvez cependant utiliser un attribut, si vous n'êtes pas embêté à ce sujet polluantes de votre domaine?
Balise de votre choix constructeur [DefaultConstructor] StructureMap les valeurs par défaut pour les plus gourmands constructeur par convention (constructeur avec la plupart des paramètres).