我有什么?
我有一个抽象类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
中),上述设计是否适用于此问题?
我还有其他方法吗?
答案 0 :(得分:2)
为什么不使用泛型来做这件事?
abstract class QueryExecutor<T>
{
public abstract T Execute();
//Common methods for construction of query
}