4

さて、例から始めましょう。これは別のアセンブリの基本クラスです。

namespace BL
{
    public class BasicClass
    {
        protected internal void func()
        {
            //Code Logic
        }
    }
}

これが別のアセンブリの派生クラスです

namespace DL
{
    public class DerivedClass:BasicClass
    {
        private void hello()
        {
            func();
        }
    }
}

func()from基本クラスを呼び出すことができるので、protected アクセス修飾子プロパティが表示されますが、アクセス修飾子プロパティはどうでしょうか。内部宣言されているので、別のアセンブリ内へのinternalアクセスを許可する必要があります。そうであれば、単純ではなく呼び出す理由func()protected internalprotected

4

4 に答える 4

5

あなたはこれを読んでみたいかもしれません。

保護された内部アクセシビリティ レベルは、保護された OR 内部を意味し、保護された AND 内部ではありません。つまり、保護された内部メンバーには、派生クラスを含む、同じアセンブリ内の任意のクラスからアクセスできます。アクセシビリティを同じアセンブリ内の派生クラスのみに制限するには、クラス自体を internal と宣言し、そのメンバーを protected として宣言します。

于 2013-03-14T13:24:54.930 に答える
3

Internalクラスのメンバーは、同じアセンブリ内のすべてのクラスで使用できますが、アセンブリ外のクラスでは使用できないことを意味します。Protected internal,member は、同じアセンブリ内の任意のクラスおよび他の任意のアセンブリ内の任意のサブクラスからアクセスできることを意味します。

参照用のアクセス修飾子に関する MSDN トピック:

保護された内部

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

于 2013-03-14T13:24:42.070 に答える
0

MSDNから(詳細についてはクリックしてください):

保護された:

型またはメンバーは、同じクラスまたは構造体、または派生クラス内のコードによってのみアクセスできます。

内部:

型またはメンバーは、同じアセンブリ内の任意のコードからアクセスできますが、別のアセンブリからはアクセスできません。

保護された内部:

型またはメンバーには、同じアセンブリ内の任意のコード、または別のアセンブリ内の任意の派生クラスからアクセスできます。

于 2013-03-14T13:32:17.490 に答える
0

「保護された内部の「内部」がまったく重要でない場合、保護された内部のようなものの使用は何ですか」:

アセンブリ BL、クラス X では、「内部」フラグが設定されているため、new BasicClass().func() を直接使用できます。このフラグが設定されていない場合、クラス X は func() にアクセスするために BasicClass から派生する必要があります。

于 2013-03-15T10:14:55.713 に答える