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