2012-08-11 4 views
2

여기 내 첫 번째 질문이 될 것이므로 관대하십시오.보호 된 회원이 사용자에 대해 볼 수

어떻게 이런 일이 가능하다 :

//there is a Form1 class which has a TableAdapter member generated by designer... 
partial class Form1 
{ 
    private void InitializeComponent() 
    { 
     this.SomeTableTableAdapter = new SomeDatabaseDataSetTableAdapters.SomeTableTableAdapter(); 
    } 

    private SomeDatabaseDataSetTableAdapters.SomeTableTableAdapter SomeTableTableAdapter; 
} 

//here is this TableAdapter class 
//It has PROTECTED member called "Adapter" 
public partial class SomeTableTableAdapter : global::System.ComponentModel.Component 
{ 
    protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter 
    { 
    } 
} 

//and in the constructor of Form1 class I can do something like this: 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.SomeTableTableAdapter.Adapter.InsertCommand.CommandText = @"INSERT INTO (...)"; 
    } 
} 

은 어떻게 SomeTableTableAdapter에서 상속하지 않습니다 Form1에 이후 protected 멤버에 접근 와서?

+0

사이트 기능을 사용하여 답변에 답장을 보내주십시오 (예 : 댓글 남기기). 이것은 Q & A 사이트이기 때문에 사실 답변이 아닌 답변은 삭제됩니다 (http://stackoverflow.com/faq#deletion). 답변을 수락 된 것으로 표시하는 것을 잊지 마십시오. – GSerg

답변

2

Adapter 속성은 파생 된 클래스와 동일한 조립체 (internal)에서 클래스 (protected) 에 액세스 의미 protected internal로 선언된다. Form1SomeTableTableAdapter과 같은 어셈블리에 있으므로 서로의 내부 구성원에 액세스 할 수 있습니다.

4

protected internal은 보호 된 OR 내부를 의미합니다. 파생 클래스 나 포함 어셈블리에서 액세스 할 수 있습니다.

Access Modifiers (C# Programming Guide)

:

보호 내부
형식 또는 부재가 선언, 또는 다른 어셈블리의 클래스 내에서 유도 된 어셈블리 코드에 의해 액세스 될 수있다. 다른 어셈블리로부터의 액세스는 보호 된 내부 요소가 선언 된 클래스에서 파생 된 클래스 선언 내에서 수행되어야하며 파생 클래스 유형의 인스턴스를 통해 수행되어야합니다.

관련 문제