> 백엔드 개발 > C++ > C의 'Friend' 키워드와 C#의 동등성을 어떻게 달성할 수 있습니까?

C의 'Friend' 키워드와 C#의 동등성을 어떻게 달성할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-31 21:59:11
원래의
329명이 탐색했습니다.

How Can I Achieve C# Equivalence to C  's

C# "Friend" 키워드에 해당

C에서는 "friend" 키워드를 사용하여 한 수업을 다른 수업으로. 그러나 이 기능은 C#에서 직접 지원되지 않습니다. 대신 InternalsVisibleTo 특성은 어셈블리 전체에서 비공개 멤버에 액세스하는 것과 부분적으로 동등한 기능을 제공합니다.

InternalsVisibleTo를 사용하는 방법

다른 어셈블리의 클래스가 비공개 멤버에 액세스할 수 있도록 하려면 다음을 수행하세요. InternalsVisibleTo 특성을 어셈블리 매니페스트에 추가할 수 있습니다. 예를 들어 AssemblyInfo.cs 파일에서 다음 코드를 사용할 수 있습니다.

[assembly: InternalsVisibleTo("OtherAssembly")]
로그인 후 복사

이 특성을 사용하면 어셈블리 내부가 "OtherAssembly"라는 어셈블리에 표시됩니다.

다음을 고려하세요 class:

internal class TestClass
{
    private int privateValue;
}
로그인 후 복사

별도의 어셈블리에서 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);
    }
}
로그인 후 복사

리플렉션과 InternalsVisibleTo 특성을 사용하면 어셈블리 전체에서 private 멤버에 액세스할 수 있습니다. 테스트와 같은 특정 시나리오용.

위 내용은 C의 'Friend' 키워드와 C#의 동등성을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿