Pergunta

Eu tenho um simples SM Registry onde estou configurando todos os meus casos de IDynamicValue. Eu tenho alguns argumentos contructor que são tipos não-primitivos (no meu caso um DateTime e um predicado da T). Existe uma maneira que eu possa injetar estes sem ter que envolvê-los em uma classe com uma interface (para que eles possam ser auto-fio). O seguinte mostra trecho de código que eu gostaria de realizar:

ForRequestedType<IDynamicValue>().AddInstances(x =>
             {
                 x.OfConcreteType<DateTimeGenerator>().WithName("DateTime")
                     .WithCtorArg("keyName").EqualTo("DateTime")
                     .WithCtorArg("startDate").EqualTo(DateTime.Now.AddMonths(-1))
                     .WithCtorArg("minuteIntervalDelta").EqualTo(60);

             });

Esse exemplo executa mas falha com a exceção:

StructureMap Exception Código: 202 Sem Instância padrão definido para PluginFamily System.DateTime

Obrigado, Nic

EDIT:

solução Freddy Rios trabalhou perfeito para o que eu precisava. Eu ainda estou curioso para saber se existe um método de fazer isso se eu estava auto-fiação alguns argumentos contructor (daí não poderia usar ConstructedBy ())

Foi útil?

Solução

Se você já está passando todos os argumentos para o construtor, você poderia usar ConstructedBy vez:

x.ConstructedBy(y => new DateTimeGenerator(
          "DateTime", DateTime.Now.AddMonths(-1), 60
         )
   ).WithName("DateTime");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top