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? P>
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 #? P>
Remarque: je ne peux pas faire les méthodes internes code> car mes tests sont dans un assemblage séparé - comme l'est la convention de la Nunit - ou est-ce? P>
4 Réponses :
c # n'a pas d'emballage ou d'espace d'espace d'espace - seul niveau d'assemblage - qui est également appelé Accès interne . P>
Cependant, vous pouvez rendre vos méthodes internes et utiliser le InternalsVissibleto attribut pour les exposer à votre assistant d'essai unitaire. P>
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. p>
Si quelque chose est étiqueté avec interne, il ne peut être consulté que par code dans le même assemblage (DLL, EXE) P>
... 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.
Vous pouvez limiter les méthodes visibles uniquement dans son assembly en les rendant internes p>
Il y a une autre façon qui est vaste différente. Vous pouvez utiliser classes partielles comme: < / p>
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. P>