0
我在我的項目中使用Ninject進行DI。我正在使用solrnet進行搜索功能,我正在嘗試將Solr併入Ninject。下面是我的代碼已經在添加Global.asax中Ninject 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;
}
}
運行應用程序時,我我收到以下錯誤 「錯誤激活ISolrQuerySerializer
沒有匹配的綁定可用,並且該類型不可自行綁定。「
我在這裏錯過了什麼或者我想在NInject中使用Solr的方式是錯誤的嗎?
感謝Paige,我嘗試了兩個鏈接,它們在(SolrNet/Ninject.Integration.SolrNet.Tests/NinjectFixture.cs)中定義的示例代碼包含初始化內核(var c = new StandardKernel();),但是我的初始化發生在Global.asax中。我需要一些示例代碼來調用Solr方法。如果您有任何這樣的代碼,這將有所幫助 – Robert 2013-04-23 16:23:41
您是否需要一個從Ninject內核獲取solr實例或一般調用Solr的示例? – 2013-04-23 17:09:01
我很喜歡調用solr的代碼。我需要從Ninject內核定義solr實例的代碼? – Robert 2013-04-23 18:08:29