我設置的是我用不同的搜索引擎(例如Apache Solr實現,SQL數據庫等)進行通信的小型基礎設施實現方法
Solr solr = new Solr();
SolrQuery sQuery = new SolrQuery();
//use some methods on sQuery to specify the query
var result = solr.query(sQuery);
到目前爲止好。但是,如何在界面中指定查詢方法? Solr類需要SolrQuery類型的對象。 MySQL類需要一個MySQLQuery類型的對象。
一個解決方案,我想要做什麼是這樣的:我改變整個界面是這樣的:
interface ISearchTechnology<T>
{
someReturnType query(T queryObject);
}
,然後Solr的(例如)的類定義更改爲
class Solr : ISearchTechnology<SolrQuery>
這一工程。但這在概念上沒有意義。 SolrQuery類型只與這一個方法(查詢)相關,而不適用於整個類。可能有其他類型(SolrQuery除外,例如SolrAnswer)需要包含。包括所有這些都是令人困惑的,並且違反了我對這個概念的理解。
我試圖將<T>
部分附加到接口(query<T>(T queryObject)
)中的方法,但我還沒有找到任何方法來實際實現它。
在欲有以下的情況結束:每個通信器類實現查詢方法所要求的接口,但只接受是從所有其他通信類不同的參數的一個特定類型。
感謝
歡迎堆棧溢出。您是否可以提供一些您試圖實施的搜索系統的參考信息?你在那裏談論SQL DB,但那不是很具體。有已通過[.NET數據提供程序在.NET提供的數據抽象(http://msdn.microsoft.com/en-us/library/a6cd7c08.aspx) – Kivin 2012-07-25 06:55:58
Solr的和SQL真的是隻引進依賴的例子。我的問題只針對接口,實現它的類和用作參數的多個類型之間的關係。 – Jan 2012-07-25 07:17:37