2016-06-09 5 views
1

에서 중첩 된 클래스의 내부 필드를 액세스이 문제는 다음과 같은 설정으로 귀결 범위가 매우 간단하다 : 나는에 대한 참조를 하나의 AppDomain에 B의 인스턴스가다른 응용 프로그램 도메인

public class B : MarshalByRefObject { 
    public A a; 
    public class A : MarshalByRefObject { 
     internal int c; 
     public int d; 
    } 
} 

다른 appdomain에서. 그러나 B.a.c를 호출하여 B에서 c를 참조 할 수 없습니다. 내가 할 경우 remotingexception "Remoting은 type C에서 필드 c를 찾을 수 없습니다"가 표시됩니다. 하지만 B.a.d를 호출하여 d에 액세스 할 수 있습니다. 리플렉션에 의존하지 않고 C를 얻을 수있는 방법이 있습니까? 아니면 단순히 AppDomains를 사용하는 결과입니까?

Mono 4.2.3에서 코드를 실행할 때 충분히 재미 있습니다. 예외는 없습니다. CAS에 문제가있는 것은 Windows에서만 발생합니다.

MSDN에서

답변

1

:

내부 유형 또는 회원은 동일한 어셈블리의 파일 내에서 액세스 할 수 있습니다

원격는, 내부 원격 가능 개체를 포함하는 어셈블리에 클라이언트에서 참조를 만드는 작업이 포함됩니다 때문에 멤버는 클라이언트 클래스 라이브러리에 표시되지 않습니다. 반향이나 역 동성과 반성의 조화에 의지하지 않고 내부 구성원들에게 접근하지 않으려 고합니다.

+0

감사합니다. 이 상황을 피할 수 있도록 코드 리팩토링을 종료했습니다. –

관련 문제