Best practice per lo sviluppo di soluzioni > Namespace e modificatori di accesso > Utilizzo di namespace e modificatori di accesso
Utilizzo di namespace e modificatori di accesso
Regole per il modificatore di accesso
Le entità con modificatore di accesso Nessuno sono accessibili da tutte le altre entità.
Le entità private sono accessibili solo dai progetti di appartenenza.
Le entità limitate sono accessibili solo dallo stesso progetto e dai namespace consentiti.
Le caratteristiche con modificatore di accesso Nessuno per un'entità con modificatore di accesso Nessuno sono accessibili da tutte le altre entità.
Le caratteristiche con modificatore di accesso Nessuno per un'entità con ambito Limitato sono accessibili solo dai namespace consentiti.
Le caratteristiche con modificatore di accesso Nessuno per un'entità con ambito Privato sono accessibili solo dal progetto in cui sono definite.
Le caratteristiche con ambito limitato sono accessibili solo dallo stesso progetto e dai namespace consentiti.
Le caratteristiche con ambito Privato sono accessibili solo dal progetto in cui sono definite.
Se un'entità è PRIVATA, le caratteristiche non possono avere ambito LIMITATO.
Le caratteristiche con ambito interno sono accessibili solo dall'entità a cui appartiene la caratteristica.
Se viene creata un'entità o una caratteristica, questa eredita l'ambito dal relativo padre.
Modificatori di accesso menzionati in ordine di ampiezza.
Nessuno >> Limitato >> Privato >> Interno
Nessuno è più ampio di Limitato, Privato e Interno.
Limitato è più ampio di Privato e Interno.
Privato è più ampio di Interno.
Interno è il modificatore di accesso dall'ambito più ristretto.
Esempi
Se [P2#Solution].[T2#Thing] prova a chiamare [P1[n1.n2.n3]#Component].[T1#Thing], la chiamata riesce perché un'entità o una caratteristica PUBBLICA all'interno di un progetto, con o senza un namespace, può essere chiamata o utilizzata da qualsiasi altra entità o caratteristica all'interno dello stesso progetto o di un progetto con un namespace diverso.
Se [P2[n4.n5.n6]#BuildingBlock].[T2#Thing] prova a chiamare [P1[n1.n2.n3]#Component].[T1#Thing], la chiamata riesce perché un'entità o una caratteristica PUBBLICA all'interno di un progetto, con o senza namespace, può essere sempre chiamata.
Se [P2#Solution].[TT2#ThingTemplate] prova a chiamare [P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate], la chiamata non riesce perché un'entità o una caratteristica PRIVATA all'interno di un progetto, con o senza namespace, può essere chiamata o utilizzata da qualsiasi altra entità o caratteristica solo all'interno dello stesso progetto.
Se [P2[n4.n5.n6]#BuildingBlock].[TS2#ThingShape] prova a chiamare [P1[n1.n2.n3]#Component].[TS1{PRIVATE}#ThingShape], la chiamata non riesce perché un'entità o una caratteristica PRIVATA all'interno di un progetto, con o senza namespace, può essere chiamata o utilizzata da qualsiasi altra entità o caratteristica solo all'interno dello stesso progetto.
Se [P1[n1.n2.n3]#Component].[T2{PRIVATE}#Thing].[S1#Service] prova a chiamare [P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate], la chiamata riesce perché può essere chiamata o utilizzata da qualsiasi altra entità o caratteristica solo all'interno dello stesso progetto.
Se [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate].[Prop2{PRIVATE}#Property] prova a chiamare [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{RESTRICTED[n1.n2]}#Service], la chiamata non riesce perché le caratteristiche con modificatore di accesso PUBBLICO per un'entità con ambito LIMITATO sono accessibili solo dai namespace consentiti.
Se [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate] prova a chiamare [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing], la chiamata non riesce perché le entità e le caratteristiche con ambito limitato sono accessibili solo dallo stesso progetto e da namespace consentiti.
Se [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing] prova a chiamare [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate], la chiamata riesce perché l'accesso alle entità o alle caratteristiche con ambito Nessuno (PUBLIC) è consentito a tutti.
Se P1[n1.n2.n3]#BuildingBlock].[T2{RESTRICTED[n1.n2]}#Thing].[Prop2{RESTRICTED[n1.n2]}#Property] prova a chiamare [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service], la chiamata non riesce perché le caratteristiche con ambito interno sono accessibili solo dall'entità a cui appartiene la caratteristica.
Se [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[Prop1{PRIVATE}#Property] prova a chiamare [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service], la chiamata riesce perché le caratteristiche con ambito interno sono accessibili solo dall'entità a cui appartiene la caratteristica.
È stato utile?