Вот чего я хотел бы достичь. Тем не менее, после полудня, я почти убедился, что это невозможно. Если кто-то может показать мне, как этого добиться, я был бы весьма благодарен.
У меня есть родительский класс .NET Parent с общим методом Fetch (). Fetch может принимать различные параметры, чтобы помочь ему узнать, какие именно записи нужно извлечь, но в данный момент это не имеет значения.
Fetch () должен знать, какую таблицу искать, чтобы найти записи после нее. Таблица отличается для каждого дочернего класса, который наследует Parent. Я хотел бы сохранить имя таблицы в строке, которая является свойством класса Child. Затем каждый дочерний элемент может предоставить свое собственное имя таблицы, а родительский элемент может обработать выборку, которая одинаково работает для всех них.
После выполнения запроса Fetch () должен иметь DataReader. Все дочерние классы имеют конструктор, который может получать DataReader в качестве параметра и использовать его для создания своего экземпляра с атрибутами, заполненными читателем.
Я должен подчеркнуть одну вещь:
Выборка - это общий метод. Если бы я проектировал его с нуля, я бы этого не сделал, но сейчас я рефакторинг кода какого-то абсолютного придурка (который мог быть или не быть мной 2 года назад), который пошел и создал несколько проектов, которые используют Fetch () в качестве общего метода для каждого дочернего класса (точнее, каждого класса, который я хочу сделать дочерним для этого нового Parent), и было бы неплохо не менять каждое вхождение в этих проектах в инстансы.
EDIT:
В частности, я не могу понять, как получить имя таблицы в Fetch () или определить дочерний класс для вызова его конструктора в результирующем DataReader.
Итак, резюмируем:
- Родитель имеет метод Shared Fetch ()
- Метод вызывается как в Child.Fetch ()
- Родитель получает информацию о таблице от Ребенка
- Fetch () знает имя класса Child, поэтому он может вызывать конструктор с помощью DataReader, который он выбирает.
Можно ли это сделать? Большое спасибо.