Ninject solrnet связывает сомнения

Я использую Ninject для DI в моем проекте. Я использую solrnet для поиска и пытаюсь включить Solr в Ninject. Ниже приведен код, который я добавил в Global.asax

    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;
    }
 }

Во время работы приложения я получаю сообщение об ошибке "Ошибка при активации ISolrQuerySerializer"

Соответствующие привязки недоступны, а тип не является самосвязываемым. "

Я что-то здесь упускаю или то, как я пытаюсь использовать Solr в NInject, неверно?

1 ответ

Поскольку вы используете собственный класс SolrNetModule, похоже, что вы не подключили все необходимые зависимости в стеке SolrNet, чтобы все работало правильно. Я бы порекомендовал использовать SolrNetModule, который поставляется с SolrNet. Вы можете получить это либо из источника, либо через NuGet. В качестве альтернативы, если вы все еще хотите использовать свой собственный пользовательский модуль NinjectModule, я бы сослался на тот из источника для сравнения.

Обновление: Вот, пожалуй, лучший пример использования Ninject с ASP.NET WebForms (я предполагаю, что вы используете ASP.NET WebForms на основе вашей структуры кода)

Другие вопросы по тегам