ソリューション開発の最良事例 > 名前空間とアクセス修飾子 > 名前空間とアクセス修飾子の使用
名前空間とアクセス修飾子の使用
アクセス修飾子の規則
「なし」アクセス修飾子があるエンティティは、その他すべてのエンティティからアクセスできます。
「プライベート」エンティティは、独自のプロジェクトからのみアクセスできます。
「制限」エンティティは、同じプロジェクトおよび許可されている名前空間からのみアクセスできます。
アクセス修飾子が「なし」であるエンティティの「なし」アクセス修飾子がある特性は、その他すべてのエンティティからアクセスできます。
「制限」エンティティの「なし」アクセス修飾子がある特性は、許可されている名前空間からのみアクセスできます。
「プライベート」エンティティの「なし」アクセス修飾子がある特性は、それらが定義されているプロジェクトからのみアクセスできます。
「制限」特性は、同じプロジェクトおよび許可されている名前空間からのみアクセスできます。
「プライベート」特性は、それらが定義されているプロジェクトからのみアクセスできます。
エンティティが PRIVATE である場合に、特性の範囲を RESTRICTED にすることはできません。
「内部」特性は、特性が属するエンティティからのみアクセスできます。
エンティティまたは特性が作成されると、それらはその親から範囲を継承します。
アクセス修飾子は、範囲が広いものから順に以下のようになります。
「なし」>>「制限」>>「プライベート」>>「内部」
「なし」は「制限」、「プライベート」、「内部」より範囲が広くなります。
「制限」は「プライベート」および「内部」より範囲が広くなります。
「プライベート」は「内部」より範囲が広くなります。
「内部」は範囲が最も狭いアクセス修飾子です。
名前空間が割り当てられているプロジェクト内または名前空間が割り当てられていないプロジェクト内のエンティティまたは特性が PUBLIC である場合、同じプロジェクト内または別の名前空間が割り当てられているプロジェクト内のその他のエンティティまたは特性によってこれを呼び出し/使用できるので、[P2#Solution].[T2#Thing][P1[n1.n2.n3]#Component].[T1#Thing] の呼び出しを試みた場合、呼び出しは許可されます。
名前空間が割り当てられているプロジェクト内または名前空間が割り当てられていないプロジェクト内のエンティティまたは特性が PUBLIC である場合、これを呼び出しできるので、[P2[n4.n5.n6]#BuildingBlock].[T2#Thing][P1[n1.n2.n3]#Component].[T1#Thing] の呼び出しを試みた場合、呼び出しは許可されます。
名前空間が割り当てられているプロジェクト内または名前空間が割り当てられていないプロジェクト内のエンティティまたは特性が PRIVATE である場合、同じプロジェクト内のその他のエンティティまたは特性によってのみこれを呼び出し/使用できるので、[P2#Solution].[TT2#ThingTemplate][P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate] の呼び出しを試みた場合、呼び出しは許可されません。
名前空間が割り当てられているプロジェクト内または名前空間が割り当てられていないプロジェクト内のエンティティまたは特性が PRIVATE である場合、同じプロジェクト内のその他のエンティティまたは特性によってのみこれを呼び出し/使用できるので、[P2[n4.n5.n6]#BuildingBlock].[TS2#ThingShape][P1[n1.n2.n3]#Component].[TS1{PRIVATE}#ThingShape] の呼び出しを試みた場合、呼び出しは許可されません。
同じプロジェクト内のその他のエンティティまたは特性によってのみこれを呼び出し/使用できるので、[P1[n1.n2.n3]#Component].[T2{PRIVATE}#Thing].[S1#Service][P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate] の呼び出しを試みた場合、呼び出しは許可されます。
RESTRICTED エンティティの PUBLIC アクセス修飾子が設定されている特性は、許可されている名前空間からのみアクセスできるので、[P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate].[Prop2{PRIVATE}#Property][P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{RESTRICTED[n1.n2]}#Service] の呼び出しを試みた場合、呼び出しは許可されません。
「制限」エンティティと特性は、同じプロジェクトおよび許可されている名前空間からのみアクセスできるので、[P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate][P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing] の呼び出しを試みた場合、呼び出しは許可されません。
範囲が「なし」(PUBLIC) であるエンティティまたは特性には誰でもアクセスできるので、[P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing][P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate] の呼び出しを試みた場合、呼び出しは許可されます。
「内部」特性は、特性が属しているエンティティからのみアクセスできるので、P1[n1.n2.n3]#BuildingBlock].[T2{RESTRICTED[n1.n2]}#Thing].[Prop2{RESTRICTED[n1.n2]}#Property][P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service] の呼び出しを試みた場合、呼び出しは許可されません。
「内部」特性は、特性が属しているエンティティからのみアクセスできるので、[P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[Prop1{PRIVATE}#Property][P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service] の呼び出しを試みた場合、呼び出しは許可されます。
これは役に立ちましたか?