我正在使用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;在我的构造函数中?我必须使用容器吗?为了获得一个类的特定实例,这似乎真的倒退了,所以我必须引入容器。