Я новичок в программировании с ООП, я пытаюсь правильно использовать концепцию наследования.
Вот код, который я попробовал ( Ссылка здесь )
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 и использоватьдинамический объект?
edit: Также, похоже, есть проблема с абстрактным и статическим, поэтому я не могу использовать модификатор static в моем методе GetWOCost () без экземпляра Adapter () (в базовом классе),Кажется, было бы проще просто скопировать и вставить, но я пытаюсь найти правильный способ сделать это.