2010-04-04 9 views
2

J'ai un attribut que j'ai écrit qui a une dépendance sur le Data Access Layer donc j'ai fait un constructeur qui a pris la classe DAL en paramètre (marqué [DefaultConstructor] et un autre, vide, constructeur c'est. Quand je sans paramètre appelle une méthode qui dépend de l'attribut comment puis-je faire StructureMap injectent le type correct?StructureMap avec mes propres attributs dans C#

Merci

Gareth

+0

J'ai maintenant travaillé que cela devrait être fait par injection setter, la documentation que je peux trouver pour StructureMap ne fait référence qu'aux anciennes versions dont les méthodes sont obsolètes. Comment le ferais-je dans la version actuelle? – ridecar2

+1

Vous ne savez pas si les attributs fonctionneront avec l'injection Setter car ils sont créés par réflexion. Si vous avez accès à un IContainer et à l'attribut instancié, vous pouvez utiliser la méthode IContainer.BuildUp (objet o). http://codebetter.com/blogs/jeremy.miller/archive/2009/01/16/quot-buildup-quot-object-existing-with-structuremap.aspx – KevM

Répondre

1

Je travaille sur le même problème, je suis en utilisant quelque chose comme ceci:

ObjectFactory.Initialize(x => 
{ 
    x.PullConfigurationFromAppConfig = true; 
    x.SetAllProperties(p => p.TypeMatches(t => 
     t.GetCustomAttributes(typeof(InjectAttribute), true).Length > 0)); 
}  

J'ai quelques questions sur les pages injectent Webform mais il fonctionne lors de la création des instances en utilisant ObjectFactory ...

+0

oh, les problèmes ont été résolus en ayant InjectAttribute hérité de StructureMap.Attributes.SetterPropertyAttribute – possan