2009-10-22 32 views
0

我有什麼? 我有一個抽象類QueryExecutor和許多類繼承,我剛剛給他們兩個。構造結果對象的邏輯是相同的,但每個繼承的類都返回一個不同的集合 - 其中一些集合在System.Web.UI.WebControls名稱空間中,一些集合是自定義集合類。設計問題 - 共同的基類和不同的返回類型

abstract class QueryExecutor 
{ 
    abstract object Execute(); 

    //Common methods for construction of query 
} 

class SqlQueryExecutor : QueryExecutor 
{ 
    public object Execute() 
    { 
     ProfileNodeCollection nodes = new ProfileNodeCollection(); 
     //Construct nodes 
     return nodes; 
    } 
} 

class CamlQueryExecutor : QueryExecutor 
{ 
    public object Execute() 
    { 
     TreeNodeCollection nodes = new TreeNodeCollection(); 
     //Construct nodes 
     return nodes; 
    } 
} 

我想要什麼?

我想有一個實例化適當的子類並返回結果的工廠。在上面的設計中,我需要投射來自QueryExecutor.Execute()方法的結果。我不想這樣做。

我面臨什麼問題?

由於返回類型在子類中有所不同(有的在System.Web.dll中),上述設計是否適合此問題?

我還有其他的方法嗎?

回答

2

爲什麼不使用泛型來做到這一點?

abstract class QueryExecutor<T> 
    { 
     public abstract T Execute(); 

     //Common methods for construction of query 
    } 
+0

好的。好主意......讓我試試看。謝謝! – Vijay 2009-10-22 08:15:49