2010-02-06 4 views
1

J'essaie d'avoir une structure de données d'une classe abstraite afin que je puisse accéder à une méthode d'objets différents implémentant cette classe abstraite. Ceci est mon code:Accéder à une méthode commune d'objets de type générique dans une structure de données dans C#

using Subsync.App; 
    List<App> installed_apps = new List<object>(); 
    public Views (string[] args) 
      { 
       //INSTALL APPS HERE. 
       installed_apps.Add (new HelloWorld.HelloWorld()); 
       //INSTALL END 

       foreach (App app in installed_apps) { 
        foreach (KeyValuePair<string, List<object>> match in app.getTokens()) { 
         tokens.Add (match.Key, match.Value); 
        } 
       } 

       //begin dispatch 
       Dictionary<string,List<object>> tokenized = Tokenize(args); 
       Dispatch(tokenized); 
      } 

Dans l'espace de noms SubSync:

public abstract class App 
    { 
     public abstract Dictionary<string, List<object>> getTokens(); 
    } 

Dans l'espace de noms HelloWorld:

public class HelloWorld : App 
{ 

    public HelloWorld() 
    { 
    } 

    public override Dictionary<string, List<object>> getTokens() 
    { 
     Dictionary<string, List<object>> ret = new Dictionary<string, List<object>>(); 
     ret.Add("helloworld",new List<object>() {"0","-hw","-helloworld"}); 
     return ret; 
    } 
} 

Compiling me donne l'erreur

Erreur CS0246: Le type ou espace de noms nom `App 'ne pouvait pas b e trouvé. Êtes-vous manquant une directive using ou une référence d'assembly ? (CS0246) (App)

Tous les fichiers de code se trouvent dans le même dossier de projet. Qu'est-ce que je fais mal? Merci!

Répondre

3

placer abstrait comme premier modificateur de classe, plutôt que public.

+0

Ça ne vaut pas le coup? :-) – joejoeson

+0

+1 puisque vous avez demandé :-P –

+0

Hé ... nous avons besoin de nos cookies par ici sur la pile: -D – joejoeson

Questions connexes