У меня будет несколько «типов» объекта, и я действительно не уверен, как лучше извлечь / сохранить эти несколько типов без отдельного сохранения / извлечения для каждого типа.
Мои классы:
public class Evaluation {
public int Id
public string Comment
}
public class EvaluationType_1 : Evaluation {
public string field
}
public class EvaluationType_1 : Evaluation {
public string field
}
Что я хотел бы сделать в своем хранилище:
public interface IEvaluationRepository {
public Evaluation getEvaluation(int id);
public SaveEvaluation(Evaluation);
}
Внутри методов get / save:
// Save/get common fields
Id
Comments
// Get child type, perform switch
Type childType = ???
switch(childType) {
// Set child-specific fields
}
Надеюсь, это имеет смысл.Я бы предпочел не добавлять столбец типа, так как он есть в другой части моей базы данных, и мне он не очень нравится
ОБНОВЛЕНИЕ
Отличнокомментарии, всем - большое спасибо.Вот дополнительные сведения / вопросы для уточнения, если это необходимо.
Мне нравится идея использования интерфейсов и обобщений, я действительно не знаю, как включить их в мой шаблон хранилища.
Когда я звоню getEvaluation
, я хочу вернуть абстрактную оценку, но я борюсь с этим кодом.То же самое с сохранением - любое понимание этого было бы превосходным - спасибо еще раз!
ОБНОВЛЕНИЕ 2
Я не хочу продолжать уточнять это, но Даниэль помогает мне отточитьчто именно я пытаюсь спросить: P.
База данных: Идентификатор оценки (PK) Комментарий
EvaluationType1
Id (FK to Evaluations.Id)
Field
EvaluationType1
Id (FK to Evaluations.Id)
Field
Итак, в getEvaluation(int id)
мне нужно выяснить, какой тип оценки онихочу.Означает ли это, что я должен передать тип?То же самое верно в saveEvaluation
, но я могу сделать карту переключателей / функций, чтобы увидеть, что это такое Type
.