当存在多个实例时,如何在构造函数中检索特定实例

时间:2017-07-21 22:40:15

标签: structuremap structuremap4

我正在使用structuremap 4.5.1。我有两个接口实例,我需要知道如何在构造函数中检索特定的接口。所以在这种情况下,我有一个类需要我的接口的一个实例,然后我有一个不同的类需要我的接口的第二个实例,但不是第一个实例。由于接口通常用于在多个类中实现,我觉得 是一个常见的场景,但我不能理解如何做到这一点。

我找到了一个名为" Named Instances"在文档中,所以我认为这是解决方案,但它不起作用。

这是我的注册表:

    For<IFileWatcher>().Add<Watcher>().Named("fileWatcher");
    For<IFileWatcher>().Add<InboundWatcher>().Named("inboundWatcher");

    For<IFileWatcher>().Use<Watcher>();

这是我的构造函数,它不起作用(当我说它不起作用时,我的意思是structmap只提供默认实例,即使我将构造函数参数命名为与我的注册表中相同):

private readonly IFileWatcher _fileWatcher;

public InboundWatcherController(IFileWatcher inboundWatcher) //<-- notice the name is the same as in my registry
{
    _watcher = inboundWatcher; //<-- this is set to an instance of "Watcher", instead of "InboundWatcher" even though the name of the parameter is "inboundWatcher"
}

那么,我如何获得&#34; InboundWatcher&#34;的实例?而不是&#34; Watcher&#34;在我的构造函数中?我必须使用容器吗?为了获得一个类的特定实例,这似乎真的倒退了,所以我必须引入容器。

0 个答案:

没有答案