2009-08-27 4 views
2

내부 구조체/클래스가있는 클래스가 있습니다. (필자는이 클래스를 사용하는 것이 중요하다면 결정했습니다.) 다른 클래스에서 내부 클래스에 액세스하려고합니다. 클래스가 있지만 외부 클래스에 의해서만 구성됩니다. 이것이 가능합니까?C#의 내부 구조체/클래스에 대한 액세스

감사

답변

4

당신이 얻을 수있는 가장 가까운 불행하게도, internal 생성자입니다. 외부 클래스의 privateprotected 멤버를 내부 클래스에서 사용할 수 있지만 그 반대는 사실이 아닙니다.

+0

내부가 작동하는 것처럼 보입니다. 외부 클래스에만 액세스 권한을 부여하고 싶지만 충분합니다. 감사합니다. –

4

내부 인터페이스 (또는 내부 추상 클래스)를 인스턴스화 할 수 없도록 선언하지 않는 이유는 무엇입니까? 그렇다면 인터페이스를 구현하는 개인 내부 클래스는 무엇입니까? 다른 클래스는 MakeInner 방법을 호출해야합니다 동안

뭔가 이런 식으로

using System; 
namespace test { 

    class Outer { 

     public interface IInner { 
      void SayHello(); 
     } 

     private class Inner : IInner { 
      public void SayHello() { 
       Console.WriteLine("Hello"); 
      } 
     } 

     public IInner MakeInner() { 
      return new Inner(); 
     } 

    } 

    class Program { 
     static void Main(string[] args) { 
      Outer x = new Outer(); 
      x.MakeInner().SayHello(); 
     } 
    } 
} 

처럼 만 Outer은, 콘크리트 Inner 개체를 만들 수 있습니다.
이 방법으로 동일한 어셈블리의 클래스에 대한 제약 조건을 적용 할 수도 있습니다.

+0

+1 조금만 더했지만 어쨌든 좋은 해결책입니다. – Thorarin

+0

이것은 영리한 해결책입니다. 감사합니다. –

관련 문제