2009-07-18 8 views
0

Я пытаюсь начать с Структурной карты. Я использую версию 2.5.3.StructureMap WithCtorArg - отсутствует ссылка?

Я построил простую загрузочную ленту, но я не могу ее скомпилировать. Я получаю ошибку:

«StructureMap.Configuration.DSL.Expressions.CreatePluginFamilyExpression» не содержит определение для «WithCtorArg» и не метода расширения «WithCtorArg» принимающих первый аргумент типа «StructureMap.Configuration.DSL.Expressions .CreatePluginFamilyExpression '(вы не указали директиву использования или ссылку на сборку?)

Что мне не хватает?

код, я пытаюсь скомпилировать здесь:

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"); 
     }); 
    } 
} 
} 

ответ

1

Если ваш класс имеет не конструктор по умолчанию с простыми аргументами типа, как строку, INT, и т.д ... Вы можете попробовать это:

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

У меня возникла аналогичная проблема.

Если вы используете общую версию ForRequestedType вы должны сделать, как предложено Дарина и использовать TheDefault.Is.OfConcreteType синтаксис

Если вы используете необщую версию ForRequestedType вы можете это сделать так:

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

Я перехожу старый проект StructureMap 3.1.6.186 и не могли получить WithCtorArg(), чтобы решить. Из документации здесь: http://structuremap.github.io/registration/inline-dependencies/ Теперь я использую что-то вроде следующего:

x.For<ProductsRepository>() 
.Use<SqlProductsRepository>() 
.Ctor<string>("connectionString").Is("SqlConnection") 
Смежные вопросы