2010-02-05 5 views
0

Voilà ma classe parente:Pourquoi ai-je cette erreur lors de la substitution d'une méthode héritée?

public abstract class BaseFile 
    { 
     public string Name { get; set; } 
     public string FileType { get; set; } 
     public long Size { get; set; } 
     public DateTime CreationDate { get; set; } 
     public DateTime ModificationDate { get; set; } 

     public abstract void GetFileInformation(); 
     public abstract void GetThumbnail(); 

    } 

Et voici la classe qui est en hériter:

public class Picture:BaseFile 
    { 
     public override void GetFileInformation(string filePath) 
     { 
      FileInfo fileInformation = new FileInfo(filePath); 
      if (fileInformation.Exists) 
      { 
       Name = fileInformation.Name; 
       FileType = fileInformation.Extension; 
       Size = fileInformation.Length; 
       CreationDate = fileInformation.CreationTime; 
       ModificationDate = fileInformation.LastWriteTime; 
      } 
     } 

     public override void GetThumbnail() 
     { 

     } 
    } 

Je pensais que quand une méthode a été surchargée, je pouvais faire ce que je voulais avec. Toute aide s'il vous plaît? :)

+3

Quelle est l'erreur? –

Répondre

10

Vous ne pouvez pas modifier la signature d'une méthode substituée. (Sauf pour les types de retour covariants)

Dans votre code, que feriez-vous attendre à passer si j'exécutez la commande suivante:

BaseFile file = new Picture(); 
file.GetFileInformation(); //Look ma, no parameters! 

Qu'est-ce que le paramètre filePath être?

Vous devez modifier les paramètres de la base et des méthodes dérivées pour qu'ils soient identiques.

+0

Par signature, vous voulez dire la chaîne filePath que je donne GetFileInformation dans ma classe d'image? Quelle alternative y a-t-il? –

+1

public abstract void GetFileInformation(); doit être public abstract void GetFileInformation (string filePath); –

+0

Vous devez avoir les mêmes paramètres dans les deux classes. Qu'essayez-vous de faire? – SLaks

1

Vous avez un paramètre dans la classe dérivée qui n'est pas déclaré dans la classe parente. (string filepath dans la méthode getFileInformation)

Questions connexes