Domanda

Ho un semplice registro SM in cui sto configurando tutte le mie istanze di IDynamicValue. Ho alcuni argomenti contructor che sono tipi non primitivi (nel mio caso un DateTime e un Predicate Of T). Esiste un modo per iniettarli senza doverli avvolgere in una classe con un'interfaccia (in modo che possano essere cablati automaticamente). Il seguente frammento di codice mostra ciò che vorrei ottenere:

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

             });

Quell'esempio funziona ma fallisce con l'eccezione:

Codice di eccezione StructureMap: 202 Nessuna istanza predefinita definita per PluginFamily System.DateTime

Grazie, Nic

Modifica

La soluzione Freddy Rios ha funzionato perfettamente per ciò di cui avevo bisogno. Sono ancora curioso di sapere se esiste un metodo per farlo se stavo auto-collegando alcuni argomenti dei contrettori (quindi non potevo usare ConstructedBy ())

È stato utile?

Soluzione

Se stai già passando tutti gli argomenti al costruttore, puoi invece utilizzare ConstructedBy:

x.ConstructedBy(y => new DateTimeGenerator(
          "DateTime", DateTime.Now.AddMonths(-1), 60
         )
   ).WithName("DateTime");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top