【发布时间】:2011-04-07 23:17:59
【问题描述】:
我是 OOP 编程新手,我正在尝试正确使用继承的概念。
这是我尝试过的代码 (Link Here)
public class Base
{
//Type?
public abstract static object Adapter();
public static DataTable GetWOCost(DateTime Date, string WO)
{
Application.UseWaitCursor = true;
DataTable dt = new DataTable();
try
{
//Cast?
dt = Adapter().GetDataByWO(WO, Date);
Application.UseWaitCursor = false;
return dt;
} catch (Exception)
{
return null;
}
}
}
public class Materiel : Base
{
static AllieesDBTableAdapters.CoutMatTableAdapter Adapter()
{
return new AllieesDBTableAdapters.CoutMatTableAdapter();
}
}
public class Labor : Base
{
static AllieesDBTableAdapters.CoutLaborTableAdapter Adapter()
{
return new AllieesDBTableAdapters.CoutLaborTableAdapter();
}
}
起初我的所有代码都在 Material 类中。但是我不得不添加第二个相同的类,但使用不同的 SQL 适配器。我尝试了不同的东西,但上面的代码有一个大问题。
由于类型正在改变,我使用了对象,但如果没有强制转换,它将无法工作。但是由于我不知道它将是什么类型,拥有 2 个或多个具有 GetWOCost 方法但具有不同适配器的类的正确方法是什么?
也许我应该更改为 .NET 4.0 并使用动态对象?
编辑:abstract 和 static 似乎也有问题,所以如果没有 Adapter() 的实例(在基类中),我不能在方法 GetWOCost() 上使用 static 修饰符。似乎只复制粘贴会更容易,但我正在尝试找出正确的方法。
【问题讨论】:
-
你绝对不应该在这个任务中使用动态。这不是它的设计目的。
标签: inheritance c#-3.0