Namespaces und Zugriffs-Modifizierer verwenden
Regeln für Zugriffs-Modifizierer
Auf Entitäten mit dem Zugriffs-Modifizierer "Kein" kann von allen anderen Entitäten aus zugegriffen werden.
Auf private Entitäten kann nur von ihren eigenen Projekten aus zugegriffen werden.
Auf eingeschränkte Entitäten kann nur von demselben Projekt und von zulässigen Namespaces aus zugegriffen werden.
Auf Merkmale mit dem Zugriffs-Modifizierer "Kein" für eine Entität, die ebenfalls "Kein" als Zugriffs-Modifizierer aufweist, kann von allen anderen Entitäten aus zugegriffen werden.
Auf Merkmale mit dem Zugriffs-Modifizierer "Kein" für eine eingeschränkte Entität kann nur von zulässigen Namespaces aus zugegriffen werden.
Auf Merkmale mit dem Zugriffs-Modifizierer "Kein" für eine private Entität kann nur von dem Projekt aus zugegriffen werden, in dem sie definiert sind.
Auf eingeschränkte Merkmale kann nur von demselben Projekt und von zulässigen Namespaces aus zugegriffen werden.
Auf private Merkmale kann nur von dem Projekt aus zugegriffen werden, in dem sie definiert sind.
Wenn eine Entität PRIVAT ist, können Merkmale nicht den Umfang EINGESCHRÄNKT haben.
Auf interne Merkmale kann nur von der Entität aus zugegriffen werden, zu der das Merkmal gehört.
Wenn eine Entität oder ein Merkmal erstellt wird, erbt sie bzw. es den Umfang vom jeweiligen Elternteil.
Zugriffs-Modifizierer, aufgeführt in der Reihenfolge ihres Umfangs:
Kein >> Eingeschränkt >> Privat >> Intern
"Kein" ist weiter gefasst als "Eingeschränkt", "Privat" und "Intern".
"Eingeschränkt" ist weiter gefasst als "Privat" und "Intern".
"Privat" ist weiter gefasst als "Intern".
"Intern" ist der am engsten gefasste Zugriffs-Modifizierer.
Beispiele
Wenn [P2#Solution].[T2#Thing] versucht, [P1[n1.n2.n3]#Component].[T1#Thing] aufzurufen, wird dies zugelassen. Grund: Wenn eine Entität oder ein Merkmal innerhalb eines Projekts (mit oder ohne Namespace) ÖFFENTLICH ist, kann sie bzw. es von einer anderen Entität oder einem anderen Merkmal innerhalb desselben Projekts oder eines Projekts mit anderem Namespace aufgerufen/verwendet werden.
Wenn [P2[n4.n5.n6]#BuildingBlock].[T2#Thing] versucht, [P1[n1.n2.n3]#Component].[T1#Thing] aufzurufen, wird dies zugelassen. Grund: Wenn eine Entität oder ein Merkmal innerhalb eines Projekts (mit oder ohne Namespace) ÖFFENTLICH ist, kann sie bzw. es aufgerufen werden.
Wenn [P2#Solution].[TT2#ThingTemplate] versucht, [P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate] aufzurufen, wird dies nicht zugelassen. Grund: Wenn eine Entität oder ein Merkmal innerhalb eines Projekts (mit oder ohne Namespace) PRIVAT ist, kann sie bzw. es von einer anderen Entität oder einem anderen Merkmal nur innerhalb desselben Projekts aufgerufen/verwendet werden.
Wenn [P2[n4.n5.n6]#BuildingBlock].[TS2#ThingShape] versucht, [P1[n1.n2.n3]#Component].[TS1{PRIVATE}#ThingShape] aufzurufen, wird dies nicht zugelassen. Grund: Wenn eine Entität oder ein Merkmal innerhalb eines Projekts (mit oder ohne Namespace) PRIVAT ist, kann sie bzw. es von einer anderen Entität oder einem anderen Merkmal nur innerhalb desselben Projekts aufgerufen/verwendet werden.
Wenn [P1[n1.n2.n3]#Component].[T2{PRIVATE}#Thing].[S1#Service] versucht, [P1[n1.n2.n3]#Component].[TT1{PRIVATE}#ThingTemplate] aufzurufen, wird dies zugelassen. Grund: Sie bzw. es kann von einer anderen Entität oder einem anderen Merkmal nur innerhalb desselben Projekts aufgerufen/verwendet werden.
Wenn [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate].[Prop2{PRIVATE}#Property] versucht, [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{RESTRICTED[n1.n2]}#Service] aufzurufen, wird dies nicht zugelassen. Grund: Auf Merkmale mit dem Zugriffs-Modifizierer ÖFFENTLICH für eine Entität mit dem Umfang EINGESCHRÄNKT kann nur von zulässigen Namespaces aus zugegriffen werden.
Wenn [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate] versucht, [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing] aufzurufen, wird dies nicht zugelassen. Grund: Auf Entitäten und Merkmale mit dem Umfang EINGESCHRÄNKT kann nur aus demselben Projekt und von zulässigen Namespaces aus zugegriffen werden.
Wenn [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing] versucht, [P2[n1.n2.n3]#BuildingBlock].[TT2#ThingTemplate] aufzurufen, wird dies zugelassen. Grund: Auf Entitäten oder Merkmale mit dem Umfang "Kein" (ÖFFENTLICH) kann jeder darauf zugreifen.
Wenn P1[n1.n2.n3]#BuildingBlock].[T2{RESTRICTED[n1.n2]}#Thing].[Prop2{RESTRICTED[n1.n2]}#Property] versucht, [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service] aufzurufen, wird dies nicht zugelassen. Grund: Auf interne Merkmale kann nur von der Entität aus zugegriffen werden, zu der das Merkmal gehört.
Wenn [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[Prop1{PRIVATE}#Property] versucht, [P1[n1.n2.n3]#BuildingBlock].[T1{RESTRICTED[n1.n2]}#Thing].[S1{INTERNAL}#Service] aufzurufen, wird dies zugelassen. Grund: Auf interne Merkmale kann nur von der Entität aus zugegriffen werden, zu der das Merkmal gehört.
War dies hilfreich?