Как новичок в ООП, я пытаюсь реализовать метод интерфейса с базовым параметром, передав (необходимый) параметр подкласса. У меня есть:
public interface IArticleDataAccess { int SaveArticle(NewsArticle thisArticle); }
public AnalysisDataAccess : IArticleDataAccess {
public int SaveArticle(AnalysisArticle thisArticle) {
// Specific save code that needs properties of AnalysisArticle not found in NewsArticle.
}
public class AnalysisArticle : NewsArticle {
IArticleDataAccess dataAccess = new ArchivedArticleDataAccess();
int Save() {
return dataAccess.SaveArticle(this);
}
}
Ошибка «ArchivedArticleDataAccess» не реализует элемент интерфейса «IArticleDataAccess.SaveArticle (NewsArticle)» », поскольку типы параметров не совпадают.
Я делаю небольшую ошибку или пропускаю основную концепцию ООП? Есть ли шаблон, который я могу использовать, чтобы сделать это? Кастинг или дженерики? Или это ограничение C # (без поддержки контравариантных параметров)?