C# 注入非灵长类类型而不将它们包装在StructureMap的接口中
我有一个简单的SM注册表,在这里配置我的所有IDynamicValue实例。我有一些非灵长类的构造函数参数(在我的例子中是DateTime和T的谓词)。有没有一种方法可以注入这些代码,而不必将它们封装在带有接口的类中(这样它们就可以自动连接)。以下代码片段显示了我想要完成的任务:C# 注入非灵长类类型而不将它们包装在StructureMap的接口中,c#,inversion-of-control,structuremap,C#,Inversion Of Control,Structuremap,我有一个简单的SM注册表,在这里配置我的所有IDynamicValue实例。我有一些非灵长类的构造函数参数(在我的例子中是DateTime和T的谓词)。有没有一种方法可以注入这些代码,而不必将它们封装在带有接口的类中(这样它们就可以自动连接)。以下代码片段显示了我想要完成的任务: ForRequestedType<IDynamicValue>().AddInstances(x => { x.OfConcreteType
ForRequestedType<IDynamicValue>().AddInstances(x =>
{
x.OfConcreteType<DateTimeGenerator>().WithName("DateTime")
.WithCtorArg("keyName").EqualTo("DateTime")
.WithCtorArg("startDate").EqualTo(DateTime.Now.AddMonths(-1))
.WithCtorArg("minuteIntervalDelta").EqualTo(60);
});
ForRequestedType()。附加说明(x=>
{
x、 OfConcreteType()。带名称(“日期时间”)
.WithTorArg(“关键字”).EqualTo(“日期时间”)
.WithTorArg(“startDate”).EqualTo(DateTime.Now.AddMonths(-1))
.WithTorArg(“分钟间隔增量”)。等于(60);
});
该示例运行但失败,出现以下异常:
StructureMap异常代码:202
没有为PluginFamily System.DateTime定义默认实例
谢谢,
Nic
编辑:
Freddy Rios的解决方案非常适合我的需要。如果我自动连接一些构造函数参数(因此无法使用ConstructedBy())如果您已经将所有参数传递给构造函数,则可以使用ConstructedBy来代替:
x.ConstructedBy(y => new DateTimeGenerator(
"DateTime", DateTime.Now.AddMonths(-1), 60
)
).WithName("DateTime");
如果已将所有参数传递给构造函数,则可以改用ConstructedBy:
x.ConstructedBy(y => new DateTimeGenerator(
"DateTime", DateTime.Now.AddMonths(-1), 60
)
).WithName("DateTime");