StructureMap WithCtorArg - отсутствует ссылка? - PullRequest
0 голосов
/ 18 июля 2009

Я пытаюсь начать работу со структурной картой. Я использую версию 2.5.3.

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 18 июля 2009

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

x.ForRequestedType<IProductsRepository>()
 .TheDefault
 .Is
 .OfConcreteType<SqlProductsRepository>()
 .WithCtorArg("connectionString")
 .EqualToAppSetting("SqlConnection");
0 голосов
/ 16 июля 2015

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

x.For<ProductsRepository>()
 .Use<SqlProductsRepository>() 
 .Ctor<string>("connectionString").Is("SqlConnection")
0 голосов
/ 25 июля 2009

Я столкнулся с подобной проблемой.

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

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

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