2009-10-22 73 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