2011-02-23 4 views
0

내가 다른 클래스C# 일관성 접근성 (다중 클래스)

namespace NS { 
public class Foo 
{ 
    public Foo() 
    { 
     this.bar = new List<Bar>(); 
    } 
    private List<Bar> bar; 
} 
public class Bar 
{ 
    public Bar() 
    { 
    } 
} 
} 

오류의 목록을 포함하는 하나 개의 클래스가 일관성없는 접근성 문제를 얻고는 속성 유형 NS.Bar 재산 NS보다 접근 .Foo.Bar

응용 프로그램의 구조는 각각 Foo가 Bar의 Dynamic Array (List)로 구성됩니다. 전자 상거래는 아니지만 가장 좋은 예는 데이터 액세스 방법에 관한 전자 상거래 상점 -> 카테고리 -> 제품이 될 것입니다.

+5

오류를 나타내는 코드 부분이 누락되었습니다. 게시 한 코드는 괜찮습니다. –

+0

NS.Foo.Bar 속성의 서명은 무엇입니까? – Fredou

+0

변수 만 나열하는 것이 맞습니까? 코드 샘플이 맞습니까? 그것이 작동해야하고 오류 메시지가 의미가없는 것처럼 보입니다 (NS.Bar는 공개되어 아무 것도 접근 할 수 없으며 NS.Foo.Bar 속성이 없습니다) – Yhrn

답변

2

컴파일 오류가 발생하지 않았으며 다시 시도하기 전에 프로젝트를 정리하거나 다시 시도해 보지 않았습니까? Bar는 공개되어 있으므로 다른 클래스에서 사용하는 것이 좋습니다.

+0

맞습니다. 오류가 사라졌습니다. 그것을 다시 지었다. 수업이 공개되지 않을 때 오류가 발생하기 전에 나는 그것이 맞는 것이라고 생각했습니다. – MattP

+0

제 대답으로 문제가 해결되면 친절하게 답변으로 받아주십시오. 나는 그것이 도움이 되었기 때문에 기쁘다! :) – jlafay

0

정확한 코드를 붙여 넣었습니까? 이 오류는 대개 속성에 사용 된 유형이 속성 자체보다 실제로 액세스 할 수없는 경우에 발생하기 때문에 발생합니다. 아마도 액세스 분류자를 넣는 것을 잊어 버렸기 때문에 (기본적으로 내부 클래스이므로)이 오류가 발생합니다. 코드를 다시 확인하십시오. 내가 생각

0

, 당신의 실제 코드는 다음과 같습니다

namespace NS 
{ 
    public class Foo 
    { 
     public Foo() 
     { 
      this.Bar = new List<Bar>(); 
     } 

     public List<Bar> Bar {get;set;} 
    } 

    internal class Bar 
    { 
     public Bar() 
     { 
     } 
    } 
} 

을 여기에서 문제는, 대중 클래스 Foo의 공공 재산 Bar내부 클래스 Bar의 인스턴스의 목록을 반환합니다.

+0

개인 클래스는 다른 클래스 안에 중첩되어야하므로 바는 내부 클래스 여야합니다. – Yhrn

0

"Bar"수업이 공개되어 있어야합니다. 명시 적으로 공개되지 않은 경우 개인 또는 보호 대상으로 간주 될 수 있습니다.