1

我有一个简单的 SM 注册表,我在其中配置所有 IDynamicValue 实例。我有一些非原始类型的构造函数参数(在我的例子中是 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 异常代码:202 没有为 PluginFamily System.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 回答