Question

Quel est l'équivalent d'un mot clé "ami" dans C Sharp?

Comment utiliser le mot clé "interne"?

J'ai lu que le mot clé "internal" remplaçait "ami" en C #.

J'utilise une DLL dans mon projet C # pour lequel j'ai le code source mais je ne souhaite pas modifier le code existant. J'ai hérité de la classe et je peux utiliser ma classe comme je le souhaite. Le problème est que la plupart du code de la classe parente contient des méthodes protégées. L’utilisation d’un ami permettra-t-elle d’accéder ou d’appeler ces méthodes protégées?

Était-ce utile?

La solution

  1. Vous pouvez utiliser le modificateur d'accès au mot clé interne pour déclarer un type ou un membre de type comme accessible uniquement par le code dans le même assemblage.

  2. Vous pouvez utiliser le InternalsVisibleToAttribute dans la System.Rutime.CompilerServices pour déclarer un type comme accessible pour le code dans le même assembly ou dans un assembly spécifié uniquement.

Vous utilisez le premier comme tout autre modificateur d'accès tel que comme privé . À savoir:

internal class MyClass {
    ...
}

Vous utilisez le second comme suit:

[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")]
internal class MyVisibleClass {
    ...
}

Ces deux éléments peuvent à juste titre être considérés comme l'équivalent de ami en C #.

Les méthodes protégées sont déjà disponible pour les classes dérivées.

Autres conseils

Non, "interne" n’est pas la même chose que " ami " (au moins le "ami" C ++)

friend spécifie que cette classe n'est accessible que par ONE, une classe particulière.
internal spécifie que cette classe est accessible à N'IMPORTE QUELLE classe de l'assembly.

1) Interne est l'équivalent C # du mot clé "ami" de VB.NET, comme vous l'avez deviné (par opposition à un remplacement)

2) L’utilisation est la suivante

internal void Function() {}
internal Class Classname() {}
internal int myInt;
internal int MyProperty { get; set; }

3) Il s’agit essentiellement d’un modificateur d’accès qui stipule que l’accessibilité de la classe / fonction / vairiable / propriété marquée comme interne est comme si elle était publique pour l’Assemblée dans laquelle elle est compilée, et privée pour toutes les autres assemblées.

Votre sous-classe pourra accéder aux membres protégés de la classe dont vous héritez.

Souhaitez-vous donner accès à ces membres protégés à une autre classe?

Interne est l’équivalent d’ami. Une méthode protégée est uniquement disponible dans la même classe ou à partir d'un héritier. Si vous essayez d'exposer des méthodes protégées d'un héritier, vous pouvez les envelopper dans des méthodes publiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top