Я использую Ninject для DI в моем проекте. Я использую solrnet для поиска, и я пытаюсь включить Solr в Ninject. Ниже код я добавил в Global.asaxNinject solrnet обязательные сомнения
protected override IKernel CreateKernel()
{
return new StandardKernel(new ServiceModule(), new SolrNetModule(ConfigurationManager.AppSettings["SearchServer"]));
}
SolrnetModule.cs
public class SolrNetModule : NinjectModule
{
private readonly string serverURL;
public IReadOnlyMappingManager Mapper { get; set; }
public SolrNetModule(string serverURL)
{
this.serverURL = serverURL;
}
public override void Load()
{
var mapper = Mapper ?? new MemoizingMappingManager(new AttributesMappingManager());
Bind<IReadOnlyMappingManager>().ToConstant(mapper);
Bind<ISolrConnection>().ToConstant(new SolrConnection(serverURL));
Bind(typeof(ISolrQueryResultParser<SolrSku>)).To(typeof(SolrQueryResultParser<SolrSku>));
Bind(typeof(ISolrQueryExecuter<SolrSku>)).To(typeof(SolrQueryExecuter<SolrSku>));
Bind(typeof(ISolrDocumentSerializer<SolrSku>)).To(typeof(SolrDocumentSerializer<SolrSku>));
Bind(typeof(ISolrBasicOperations<SolrSku>)).To(typeof(SolrBasicServer<SolrSku>));
Bind(typeof(ISolrOperations<SolrSku>)).To(typeof(SolrServer<SolrSku>));
Bind(typeof(ISolrReadOnlyOperations<SolrSku>)).To(typeof(SolrServer<SolrSku>));
Bind<ISolrService>().To<SolrService>();
}
}
Solrservice.cs
public class SolrService : ISolrService
{
public readonly ISolrReadOnlyOperations<SolrSku> _solr;
public SolrService(ISolrReadOnlyOperations<SolrSku> solr)
{
_solr = solr;
}
public ISolrQueryResults<SolrSku> SearchAll(string query)
{
var qopts = BuildParameters();
var results = _solr.Query(query, qopts);
return results;
}
private QueryOptions BuildParameters()
{
var qopts = new QueryOptions();
qopts.AddOrder(new SortOrder("dateAdded", Order.DESC));
return qopts;
}
}
во время работы приложения, I я получаю ошибку ниже "Ошибка активация ISolrQuerySerializer
Нет соответствующих привязок, и тип не является самопереключаемым. "
Мне что-то не хватает или так, как я пытаюсь использовать Solr в NInject, неправильно?
Спасибо Paige, я попробовал как ссылки, код примера, который они определили в (SolrNet/Ninject.Integration.SolrNet.Tests/NinjectFixture.cs), содержит инициализацию ядра (var c = new StandardKernel();), однако моя инициализация происходит в Global.asax. Мне нужен образец кода для вызова метода Solr. Было бы полезно, если бы у вас был такой код – Robert
Вам нужен пример получения экземпляра solr из ядра Ninject или вызова Solr в целом? –
Мне хорошо с кодом для вызова solr в целом. Мне нужен код для определения экземпляра solr из ядра Ninject? – Robert