Je suis assez nouveau à C# alors pardonnez-moi si c'est une question stupide. Je rencontre une erreur mais je ne sais pas comment la résoudre. J'utilise Visual Studio 2010. J'ai déjà implémenté plusieurs correctifs de membres de la communauté mais des problèmes semblent persister.Modification des modificateurs d'accès solution de contournement
Il a commencé avec cette ligne de code
public class GClass1 : KeyedCollection<string, GClass2>
Je m'a donné l'erreur
'GClass1' does not implement inherited abstract member 'System.Collections.ObjectModel.KeyedCollection<string,GClass2>.GetKeyForItem(GClass2)'
D'après ce que je l'ai lu coul être résolu en mettant en œuvre le membre abstrait dans la classe héritée comme si
public class GClass1 : KeyedCollection<string, GClass2>
{
public override TKey GetKeyForItem(TItem item);
protected override void InsertItem(int index, TItem item)
{
TKey keyForItem = this.GetKeyForItem(item);
if (keyForItem != null)
{
this.AddKey(keyForItem, item);
}
base.InsertItem(index, item);
}
Cependant, cela m'a donné des erreurs en disant 'Le type ou le nom de l'espace de nom ne pouvait pas b e trouvé TKey/TItem n'a pas pu être trouvé. ' J'ai donc remplacé les types d'espace réservé.
Actuellement le code est
public class GClass1 : KeyedCollection<string, GClass2>
{
public override string GetKeyForItem(GClass2 item);
protected override void InsertItem(int index, GClass2 item)
{
string keyForItem = this.GetKeyForItem(item);
if (keyForItem != null)
{
this.AddKey(keyForItem, item);
}
base.InsertItem(index, item);
}
Je suis totalement oublié que GetKeyForItem est protégé. La nouvelle erreur m'indique que je ne peux pas changer les modificateurs d'accès en surchargeant System.Collections.ObjectModel.KeyedCollection.GetKeyForItem (GCl ass2).
Je reçois également une étrange erreur en disant « GClass1.GetKeyForItem (GClass2) » doit déclarer un corps parce qu'il est pas marqué abstraite, extern ou partielle »
Y a-t-il des solutions de contournement au problème de modificateur d'accès, et quelqu'un pourrait-il expliquer l'erreur «déclarer un corps parce qu'il n'est pas marqué»?
Merci!
Je vous suggère de lire un bon livre sur C# et recommencer. Comme vous l'avez déjà expérimenté vous-même, ces solutions rapides ne mèneront qu'à plus de problèmes. –