我想我可能用错了,多核的 Ninject 变体没有太多,但我正在尝试使用 Ninject 和 SolrNet。同时利用完全松散的映射。所以我知道我需要使用 Ninject 命名绑定。不能使用 Windsor,它的 dll 似乎与我们当前的东西不兼容。
可疑代码:
SolrServers cores = new SolrServers();
cores.Add(new SolrServerElement
{
Id = "index1",
DocumentType = typeof(ISolrOperations<Dictionary<string, object>>).AssemblyQualifiedName,
Url = "http://localhost:8080/solr/index1",
});
cores.Add(new SolrServerElement
{
Id = "index2",
DocumentType = typeof(ISolrOperations<Dictionary<string, object>>).AssemblyQualifiedName,
Url = "http://localhost:8080/solr/index2",
});
var kernal = new StandardKernel(new SolrNetModule(cores));
var operations = kernal.Get<ISolrOperations<Dictionary<string, object>>>("index1");
产生的错误:
Test 'Test.DifferentTest' failed:
Ninject.ActivationException : Error activating ISolrOperations{Dictionary{string, Object}}
No matching bindings are available, and the type is not self-bindable.
Activation path:
1) Request for ISolrOperations{Dictionary{string, Object}}
我了解 DI 的概念,但我知道的并不多,因为在 MVC 中,一切似乎都对我隐藏了。因此,任何额外的解释,关于为什么这是愚蠢的/SolrNet 如何与之交互,将不胜感激。
链接到 SolrNet 模块https://github.com/mausch/SolrNet/blob/master/Ninject.Integration.SolrNet/SolrNetModule.cs