Entwickler-Ecke
Andere .NET-Sprachen - Sichtbarkeiten von Typen
Mitmischer 1703 - Fr 06.11.09 19:41
Titel: Sichtbarkeiten von Typen
Hi DF!
Ich hab gleich probiert in Prism Großteile von Delphi einzubauen Im Moment stehe ich vor folgendem Problem
Delphi-Prism-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| namespace WindowsApplication1;
interface
uses System.Collections.Generic, System.Linq, System.Text;
type Nations = ( n1, n2, n3);
Army = record private public
end;
BeeNation = public class private fWorkers : Integer; fNation : Nations; fArmy : Army; protected public property Workers : Integer read fWorkers; property Nation : Nations read fNation; end; implementation
end. |
1. Er compiliert durch und wirft mir als Fehler: Fehler 1 (PE114) Der aus Typ "WindowsApplication1.BeeNation" verwendete Typ "WindowsApplication1.Nations" muss public sein H:\Backup\Borland\Delphi Prism\BeeWars\BeeWars\WindowsApplication1\BeeNation.pas 29 21 WindowsApplication1
Es hapert an der Property Nation vom Typ Nations - Ich verstehe jetzt nicht, warum Nations private sein soll?! :nixweiss: Es ist doch eigentlich ein ganz normaler Typ - die property Workers funzt ja auch für den Typen Integer!
Christian S. - Fr 06.11.09 19:48
Typen, die Du ohne eine Sichtbarkeitsangabe deklarierst, haben standardmäßig die Sichtbarkeit
assembly (äquivalent zu
internal in C#).
Wenn Du also in einer public-Klasse eine public-Property hast, kann der Typ keine geringere Sichtbarkeit haben. Du musst Nations also so deklarieren:
Delphi-Prism-Quelltext
1: 2:
| Nations = public ( n1, n2, n3); |
Mitmischer 1703 - Fr 06.11.09 19:49
Okay, danke!
Mit welcher Sichtbarkeitsstufe kann man assembly denn in Pascal vergleichen?
Christian S. - Fr 06.11.09 19:51
Kennt pascal inzwischen Typensichtbarkeit? :gruebel:
assembly ist eigentlich sehr sprechend: Es ist nur innerhalb des Assemblies (also der DLL oder EXE) zu sehen, für andere Assemblies unsichtbar.
Mitmischer 1703 - Fr 06.11.09 19:57
:shock: Aber dann müsste Nations doch sichtbar sein : gleiche EXE und sogar gleicher namespace ! :?
PS: Ich meinte Delphi / Object Pascal ;))
Christian S. - Fr 06.11.09 20:00
Mitmischer 1703 hat folgendes geschrieben : |
:shock: Aber dann müsste Nations doch sichtbar sein : gleiche EXE und sogar gleicher namespace ! :? |
Du willst aber ein
public-Property in einem
public-Typen damit deklarieren. Beides wäre auch außerhalb des Assemblies sichtbar. Da es ja aber nicht sein kann, dass der Name der Property außerhalb sichtbar ist, ihr Typ aber nicht, muss der auch
public sein.
Mitmischer 1703 - Fr 06.11.09 20:06
Achso, okay :autsch:
Danke!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!