8
votes

Quel est l'équivalent de l'accès par défaut par défaut de Java en C #?

Quel est l'équivalent de l'accès par défaut de la valeur par défaut de Java dans C #? Est-ce qu'il y a un? Est-il de toute façon pour limiter l'accès à un espace de noms particulier?

le problème:

J'essaie de restreindre l'accès à certaines méthodes à mes tests de Nunit - dans Junit, je le ferais en faisant l'accès des méthodes et le test dans le même paquet, mais sous SRC / Test / Java au lieu de SRC / Main / Java. Comment puis-je réaliser quelque chose de similaire dans C #?

Remarque: je ne peux pas faire les méthodes internes car mes tests sont dans un assemblage séparé - comme l'est la convention de la Nunit - ou est-ce?


0 commentaires

4 Réponses :


25
votes

c # n'a pas d'emballage ou d'espace d'espace d'espace - seul niveau d'assemblage - qui est également appelé Accès interne .

Cependant, vous pouvez rendre vos méthodes internes et utiliser le InternalsVissibleto attribut pour les exposer à votre assistant d'essai unitaire.

Vous pouvez trouver utile de lire ce post et ce que .


0 commentaires

1
votes

Il n'y a rien que c'est un équivalent exact. Mot-clé interne est proche, mais il limite par montage, pas par espacement de noms.

Si quelque chose est étiqueté avec interne, il ne peut être consulté que par code dans le même assemblage (DLL, EXE)


1 commentaires

... ou par code dans d'autres assemblées auxquelles la permission explicite d'accéder aux éléments internes a été donnée à l'aide de InternalsVissibleto.



0
votes

Vous pouvez limiter les méthodes visibles uniquement dans son assembly en les rendant internes


0 commentaires

1
votes

Il y a une autre façon qui est vaste différente. Vous pouvez utiliser classes partielles comme: < / p>

  1. fichier n ° 1 = code sous test. Écrit juste comme la normale mais avec le mot clé "partiel"
  2. Fichier # 2 = Test de l'unité, contient une classe imbriquée qui est le test d'unité réel.

    Les classes imbriquées ont accès à tout dans leur classe mère (y compris les méthodes privées). Dans le cadre de votre processus de construction (peut-être des scripts Msbuild ou Nant), il suffit de ne pas compiler les tests dans le cadre de l'assemblage final, et le sous-test de code fonctionnera tout simplement bien.


0 commentaires