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 (...)";
    }
}

Form1 は SomeTableTableAdapter を継承していないため、保護されたメンバーにアクセスするにはどうすればよいですか?

4

2 に答える 2

4

protected internal保護または内部を意味します。アクセスは、派生クラスまたはそれを含むアセンブリから許可されます。

アクセス修飾子 (C# プログラミング ガイド) :

protected internal
型またはメンバーは、それが宣言されているアセンブリ内の任意のコードから、または別のアセンブリ内の派生クラス内からアクセスできます。別のアセンブリからのアクセスは、保護された内部要素が宣言されているクラスから派生したクラス宣言内で行う必要があり、派生クラス型のインスタンスを介して行う必要があります。

于 2012-08-11T14:53:44.613 に答える
2

Adapterプロパティは として宣言されます。protected internalこれは、派生クラス ( protected)および同じアセンブリ内のクラス ( ) からアクセスできることを意味しますinternalForm1は と同じアセンブリにあるため、SomeTableTableAdapter互いの内部メンバーにアクセスできます。

于 2012-08-11T14:53:27.243 に答える