2009-07-18 10 views
0

Ich versuche, mit Strukturkarte zu beginnen. Ich benutze Version 2.5.3.StructureMap WithCtorArg - fehlende Referenz?

Ich habe einen einfachen Boot Strapper gebaut, aber ich kann es nicht kompilieren. Ich erhalte den Fehler:

‚StructureMap.Configuration.DSL.Expressions.CreatePluginFamilyExpression‘ enthält keine Definition für ‚WithCtorArg‘ enthalten und keine Erweiterungsmethode ‚WithCtorArg‘ ein erstes Argument vom Typ akzeptieren ‚StructureMap.Configuration.DSL.Expressions .CreatePluginFamilyExpression 'könnte gefunden werden (fehlt eine Verwendungs-Direktive oder eine Assembly-Referenz?)

Was ist das, was ich vermisse?

der Code, den ich versuche, hier zu kompilieren:

using DomainModel.Abstract; 
using DomainModel.Concrete; 
using StructureMap; 
using StructureMap.Pipeline; //The only WithCtorArg methods I can find are in this namespace, it didn't help. 

namespace WebUI 
{ 
public class ContainerBootstrapper 
{ 
    public static void BootstrapStructureMap() 
    { 
     // Initialize the static ObjectFactory container 
     ObjectFactory.Initialize(x => 
     { 
      x.ForRequestedType<IProductsRepository>() 
       .TheDefaultIsConcreteType<SqlProductsRepository>() 
       .WithCtorArg("connectionString") 
       .EqualToAppSetting("SqlConnection"); 
     }); 
    } 
} 
} 

Antwort

1

Wenn Ihre Klasse einen nicht Standardkonstruktors mit einfachen Typargumente wie String hat, int, etc ... Sie können dies versuchen:

x.ForRequestedType<IProductsRepository>() 
.TheDefault 
.Is 
.OfConcreteType<SqlProductsRepository>() 
.WithCtorArg("connectionString") 
.EqualToAppSetting("SqlConnection"); 
0

Ich bin in ein ähnliches Problem geraten.

Wenn Sie die generische Version von ForRequestedType verwenden Sie tun müssen, als Darin vorgeschlagen und verwenden Sie die TheDefault.Is.OfConcreteType Syntax

Wenn Sie die nicht-generische Version von ForRequestedType verwenden können Sie tun es etwa so:

x.ForRequestedType(typeof (ProductsRepository)) 
.TheDefaultIsConcreteType(typeof(SqlProductsRepository)) 
.WithCtorArg("connectionString") 
.EqualToAppSetting("SqlConnection"); 
0

ich ein altes Projekt bin ein Upgrade 3.1.6.186 StructureMap und konnte nicht WithCtorArg() zu lösen. Von der Dokumentation hier: http://structuremap.github.io/registration/inline-dependencies/ Ich verwende jetzt etwas wie das folgende:

x.For<ProductsRepository>() 
.Use<SqlProductsRepository>() 
.Ctor<string>("connectionString").Is("SqlConnection") 
Verwandte Themen