11
votes

Champs de classe d'accès de la classe partielle

Je suis actuellement dans un scénario dans lequel je dois utiliser des classes partielles. Dans cette classe partielle, j'ai quelques méthodes qui doivent aborder des champs dans l'autre classe.

Par exemple

Edit: Je suis désolé: la première classe est déjà déclarée partiel ! xxx

et xxx

le compilateur dit mystring n'existe pas dans la classe partielle!

Comment puis-je surmonter ce problème?


0 commentaires

5 Réponses :


0
votes

Vous devez simplement marquer la classe comme partiel dans les lieux , pas seulement l'un d'entre eux.


0 commentaires

1
votes

Lorsque je pose votre code dans Visual Studio, j'ai eu une erreur différente: xxx pré>

Si je le change, cela fonctionne bien: P>

    public class myClass
    {

        private string _myString;

        public string myString
        {
            get { return _myString; }
        }
    }


    public partial class myClass
    {

        public void doSomething()
        {
            _myString = "newString";
        }

    }


3 commentaires

Bien que cela puisse compiler bien, dans la documentation, il est dit que c'est requis. C'est probablement une bonne idée de le faire quand même être cohérente et la preuve future.


Je viens de suivre ce que les formes concepteur ... Naughty Winforms Designer!


J'ai eu le même problème jusqu'à ce que j'ai remarqué que ma méthode était statique. Duh!



1
votes

En supposant que les deux déclarations se réfèrent à la même espace de noms, votre première déclaration ne contient pas le mot clé partiel:

Utilisation du mot clé partiel indique que d'autres parties de la classe, struct, ou une interface peut être définie dans le Espace de noms. Toutes les pièces doivent utiliser le mot-clé partiel. Toutes les pièces doivent être disponible au moment de la compilation pour former le type final. Toutes les pièces doivent avoir la même accessibilité, telle que public, privé, et ainsi de suite.Public, privé, et ainsi de suite.

http://msdn.microsoft.com /en-fr/Library/wa80x488(V=VS.80).aspx


0 commentaires

40
votes

Un problème courant consiste à avoir les classes partielles dans différents espaces de noms. Les espaces de noms font partie du nom de la classe, nomspace1.myclass et nomspace.a.myclass sont traités comme deux classes complètement séparées.

Selon MSDN , Chaque partie d'une classe partielle doit:

  • avoir le modificateur partial
  • avoir le même nom de classe
  • être dans la même espace de noms
  • être dans la même assemblée ou DLL
  • avoir la même visibilité (comme le public, privé, etc.)

0 commentaires

12
votes

Il y a quelques éléments dont vous avez besoin pour corriger avec le code que vous avez affiché:

Lorsque vous utilisez des classes partielles en C # toutes les parties de la classe doivent être déclarées comme classes partielles < P> Vous avez: xxx

qui doit devenir: xxx

Deuxièmement, vous essayez de définir: < / p> xxx

mais mystring est une propriété publique sans setter.

donc vous ajoutez un seigteur lors de la déclaration mystring : xxx

ou simplement utiliser: xxx

dans votre deuxième fichier de classe partielle.


0 commentaires