1

IDynamicValueのすべてのインスタンスを構成している単純なSMレジストリがあります。非プリミティブ型(私の場合はDateTimeとPredicate Of T)であるいくつかのコンストラクター引数があります。インターフェイスを使用してクラスにラップすることなく、これらを注入できる方法はありますか(自動配線できるように)。次のコードスニペットは、私が達成したいことを示しています。

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

             });

その例は実行されますが、例外を除いて失敗します。

StructureMap例外コード:202PluginFamilySystem.DateTimeにデフォルトインスタンスが定義されていません

ありがとう、ニック

編集:

Freddy Riosのソリューションは、私が必要としていたものにぴったりでした。いくつかのコンストラクター引数を自動配線している場合にこれを行う方法があるかどうかはまだ興味があります(したがって、ConstructedBy()を使用できませんでした)

4

1 に答える 1

1

すでにすべての引数をコンストラクターに渡している場合は、代わりに ConstructedBy を使用できます。

x.ConstructedBy(y => new DateTimeGenerator(
          "DateTime", DateTime.Now.AddMonths(-1), 60
         )
   ).WithName("DateTime");
于 2009-03-16T06:42:46.390 に答える