繁体   English   中英

向Simple Injector注册收集

[英]Register collection with Simple Injector

我尝试在C#中使用简单的注入器注册一个集合。 我的方法如下:

container.Collection.Register<IValidateMitarbeiter>(
    typeof(MitarbeiterVerfuegbarkeitValidator),
    typeof(MitarbeiterQualifikationsValidator));

但我收到此错误消息:

配置无效。 为IDispoLinienManager类型创建实例失败。 类型DispoLinienManager的构造函数包含名称为'mitarbeiterValidators'的参数和未注册的IValidateMitarbeiter类型。 请确保IValidateMitarbeiter已注册,或更改DispoLinienManager的构造函数。

这是DispoLinienManager的构造函数

public DispoLinienManager(IDataContextFactory dataContextFactory,
        IDispoPlanLinieFactory dispoPlanLinieFactory,
        IValidateMitarbeiter mitarbeiterValidators)
    {
        this.dataContextFactory = dataContextFactory;
        this.dispoPlanLinieFactory = dispoPlanLinieFactory;
        this.mitarbeiterValidators = mitarbeiterValidators;
    }

IValidateMitarbeiter具有两个在DispoLinienManager中使用的实现。 如果有任何遗漏的信息,我将很高兴帮助您解决我的问题。

如果我使用最新版本的Simple Injector在本地复制您的示例,则会收到以下消息:

配置无效。 创建类型DispoLinienManager的实例失败。 类型DispoLinienManager的构造函数包含名称为'mitarbeiterValidators'的参数和未注册的IValidateMitarbeiter类型。 请确保IValidateMitarbeiter已注册,或更改DispoLinienManager的构造函数。 但是,存在IEnumerable <IValidateMitarbeiter>的注册; 您是要依赖IEnumerable <IValidateMitarbeiter>吗?

请注意该消息的最后一部分。

如文档中此处所述,Simple Injector将集合的注册与一对一映射分开:

在设计Simple Injector时,我们做出了非常明确的设计决策,以定义单独的RegisterCollection方法来注册抽象服务的集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM