Maison > développement back-end > C++ > Comment puis-je obtenir l'équivalence C# avec le mot clé « Friend » de C ?

Comment puis-je obtenir l'équivalence C# avec le mot clé « Friend » de C ?

Mary-Kate Olsen
Libérer: 2024-12-31 21:59:11
original
329 Les gens l'ont consulté

How Can I Achieve C# Equivalence to C  's

Équivalent C# du mot-clé « Ami »

En C, vous pouvez utiliser le mot-clé « ami » pour accorder l'accès aux membres privés de une classe vers d’autres classes. Cependant, cette fonctionnalité n'est pas directement prise en charge en C#. Au lieu de cela, l'attribut InternalsVisibleTo fournit un équivalent partiel pour accéder aux membres privés dans les assemblys.

Comment utiliser InternalsVisibleTo

Pour permettre à une classe d'un autre assembly d'accéder aux membres privés, vous pouvez ajouter l'attribut InternalsVisibleTo au manifeste d'assembly. Par exemple, dans le fichier AssemblyInfo.cs, vous pouvez utiliser le code suivant :

[assembly: InternalsVisibleTo("OtherAssembly")]
Copier après la connexion

Cet attribut rend les éléments internes de votre assembly visibles à l'assembly nommé "OtherAssembly".

Exemple

Considérons la classe suivante :

internal class TestClass
{
    private int privateValue;
}
Copier après la connexion

Dans un assemblage séparé, vous pouvez créer une classe pour accéder à privateValue :

public class TesterClass
{
    public void DoSomething(TestClass instance)
    {
        // Set the value using reflection
        instance.GetType().GetField("privateValue", 
            BindingFlags.NonPublic | 
            BindingFlags.Instance).SetValue(instance, 10);
    }
}
Copier après la connexion

En utilisant la réflexion et l'attribut InternalsVisibleTo, vous pouvez accéder aux membres privés des assemblys pour des scénarios spécifiques, tels que les tests.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal