En tant que novice à la POO, j'essaie d'implémenter une méthode d'interface avec un paramètre de base en passant un paramètre de sous-classe (nécessaire). J'ai:Comment passer un paramètre de sous-classe lors de l'implémentation d'une interface en C#?
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);
}
}
L'erreur est « ArchivedArticleDataAccess' n'implémente pas membre d'interface 'IArticleDataAccess.SaveArticle (NewsArticle) » comme les types de paramètres ne sont pas les mêmes. Suis-je en train de faire une petite erreur ou de manquer un concept OOP fondamental? Y a-t-il un modèle que je peux utiliser pour faire ceci? Casting ou génériques? Ou est-ce une limitation de C# (pas de support de paramètres contravariant)?