특정 시나리오에서는 사용 중인 어셈블리가 객체 유형을 반환하는 메서드를 제공하지만 개체는 실제로 액세스할 수 없는 어셈블리 내의 내부 클래스에 속합니다. 이로 인해 자체 어셈블리에서 해당 내부 클래스의 필드와 메서드에 액세스하는 방법에 대한 의문이 제기됩니다.
공급업체에서 제공한 어셈블리를 수정하는 것은 불가능하지만, 테스트 목적으로 공급업체 어셈블리의 내부 구성원에 대한 특정 어셈블리 액세스를 허용하려는 경우에 대한 솔루션입니다. 이는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!