2009-03-16 8 views
1

私はIDynamicValueのすべてのインスタンスを構成するシンプルなSM Registryを持っています。私は非プリミティブ型(私の場合はDateTimeとTの述語)であるいくつかのコンストラクタ引数を持っています。インターフェイスを持つクラスにラップする必要なく、これらを挿入できる方法はありますか(つまり、自動配線が可能です)。たとえば、実行されることを構造体マップのintefaceにラップせずに非プリミティブ型を挿入する

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例外コード:PluginFamilyのSystem.DateTime

ために定義された202 Noデフォルトインスタンス

おかげで、 ニック

EDIT:

フレディリオスのソリューションは、私が必要とするものに最適でした。コンストラクタの引数を自動配線している(したがってConstructedBy()を使用できなかった)場合、これを行う方法があるかどうか不思議です。

+0

...同じ問題が発生しました。 – ozczecho

答えて

1

すべての引数をコンストラクタに渡している場合は、代わりにConstructedBy:

x.ConstructedBy(y => new DateTimeGenerator(
      "DateTime", DateTime.Now.AddMonths(-1), 60 
     ) 
    ).WithName("DateTime");