>백엔드 개발 >C++ >C#은 Private 멤버에 대한 액세스 제어를 위해 C의 'friend' 키워드 기능을 어떻게 달성합니까?

C#은 Private 멤버에 대한 액세스 제어를 위해 C의 'friend' 키워드 기능을 어떻게 달성합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-27 06:41:09901검색

How Does C# Achieve the Functionality of C  's

C의 Friend 및 C의 부재

C에서 "friend" 키워드는 외부 클래스의 비공개 멤버에 대한 액세스 권한을 부여합니다. 수업. 이를 통해 캡슐화를 손상시키지 않고 개인 정보를 제어하여 공유할 수 있습니다. 그러나 이 개념은 C#에서 직접 구현되지 않습니다.

간격 해소: InternalsVisibleTo

C#에서는 "친구"에 가장 가까운 근사값으로 InternalsVisibleTo라는 속성을 제공합니다. 이를 통해 어셈블리는 다른 어셈블리의 내부 멤버(전용 멤버 포함)에 액세스할 수 있습니다. 이는 제한된 형태의 제어된 액세스를 제공합니다.

다음 시나리오를 고려하십시오.

  • 비공개 멤버가 있는 ClassA라는 클래스가 있습니다.
  • 테스트 클래스를 원합니다. , Tester를 사용하여 이러한 비공개 멤버에 액세스합니다.

이를 달성하려면 다음 속성을 ClassA의 AssemblyInfo.cs 파일:

[assembly: InternalsVisibleTo("TesterAssembly")]

"TesterAssembly"를 Tester 클래스가 포함된 어셈블리 이름으로 바꿉니다. 이렇게 하면 ClassA의 내부 멤버에게 TesterAssembly 액세스 권한을 부여하게 됩니다.

사용 예

이것이 어떻게 작동하는지 설명하기 위해 다음은 간단한 예입니다. 예:

ClassA.cs

public class ClassA
{
    private int _privateMember;

    public int PublicMember { get; set; }
}

Tester.cs

using ClassAAssembly;

public class Tester
{
    public void Test()
    {
        // Access private member through InternalsVisibleTo
        var instance = new ClassA();
        instance._privateMember = 10;
    }
}

InternalsVisibleTo 속성을 적용하여, 어셈블리 수준에서 내부 멤버(비공개 멤버 포함)의 접근성을 제어할 수 있으므로 노출 없이 관리 코드 테스트가 가능합니다. 민감한 데이터는 외부 소비자에게 공개됩니다.

위 내용은 C#은 Private 멤버에 대한 액세스 제어를 위해 C의 'friend' 키워드 기능을 어떻게 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.