我有一个像这样的构造函数,我想从工厂传递参数:
public Event(IRegisteredType registeredEarly, IPassNow passNowByInterface,
DateTimeOffset local, DateTimeOffset world)
{
// ...
}
我尝试了这种方法,但它不起作用,因为本地和世界价值观相同,一个覆盖另一个:
public Event CreateEvent(IPassNow passNow, DateTimeOffset local, DateTimeOffset world)
{
var args = new Arguments { { typeof(IPassNow), passNow } };
args.InsertTypedCollection(new object[] { local, world });
return _container.Resolve<Event>(args);
}
- registerEarly 应该自动解析,它在组合根目录中注册,并且有效
- passNowByInterface 应该在解析时传递,但因为它是一个接口,我需要指定接口类型,否则 Castle Windsor 将尝试使用参数的具体类型,同样有效 - 请参阅使用 Castle 传递通用参数失败温莎
- local 和 world 也需要在解析时传递,但请注意它们都是相同的具体类型,我不能依赖变量名 - 请参阅Castle Windsor 中相同类型的解析时参数
- 我不能让最后一个与其他人一起工作?