> 백엔드 개발 > C++ > C#의 외부 어셈블리에서 내부 클래스에 어떻게 액세스할 수 있나요?

C#의 외부 어셈블리에서 내부 클래스에 어떻게 액세스할 수 있나요?

Patricia Arquette
풀어 주다: 2025-01-01 09:13:10
원래의
941명이 탐색했습니다.

How Can I Access Internal Classes from External Assemblies in C#?

외부 어셈블리에서 내부 클래스 액세스

특정 시나리오에서는 사용 중인 어셈블리가 객체 유형을 반환하는 메서드를 제공하지만 개체는 실제로 액세스할 수 없는 어셈블리 내의 내부 클래스에 속합니다. 이로 인해 자체 어셈블리에서 해당 내부 클래스의 필드와 메서드에 액세스하는 방법에 대한 의문이 제기됩니다.

해결책: InternalsVisibleTo

공급업체에서 제공한 어셈블리를 수정하는 것은 불가능하지만, 테스트 목적으로 공급업체 어셈블리의 내부 구성원에 대한 특정 어셈블리 액세스를 허용하려는 경우에 대한 솔루션입니다. 이는 InternalsVisibleTo 특성을 사용하여 달성할 수 있습니다.

프로젝트의 AssemblyInfo.cs 파일에 다음 줄을 추가합니다.

[assembly: InternalsVisibleTo("name of assembly here")]
로그인 후 복사

이 줄은 지정된 어셈블리에 내부 멤버에 대한 액세스 권한을 부여합니다. 액세스하려는 내부 클래스를 포함하여 어셈블리의

사용

추가한 후 InternalsVisibleTo 특성을 사용하고 어셈블리를 다시 빌드하면 다음과 같이 외부 어셈블리에서 내부 클래스에 액세스할 수 있습니다.

public class MyClass
{
  public void AccessTest()
  {
    Vendor vendor = new Vendor();
    object value = vendor.Tag;

    // Cast the object to the internal class type
    InternalClass internalClass = (InternalClass)value;

    // Access the internal member
    string test = internalClass.test;
  }
}
로그인 후 복사

참고: 액세스 권한을 부여한 어셈블리가 다음과 같은지 확인하는 것이 중요합니다. 프로덕션 환경에서 사용할 경우 애플리케이션의 보안이 손상될 수 있으므로 테스트 목적으로만 사용됩니다.

위 내용은 C#의 외부 어셈블리에서 내부 클래스에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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