Megosztás a következőn keresztül:


Névterek és típus láthatósága (C++/CX )

A névtér egy szabványos C++ szerkezet a kapcsolódó funkciókkal rendelkező csoportosítási típusokhoz és a kódtárak névütközésének megelőzéséhez. A Windows futtatókörnyezet típusú rendszer megköveteli, hogy az összes nyilvános Windows-futtatókörnyezet-típust, beleértve a saját kódban lévőket is, névtérbeli névtérben kell deklarálni a névtér hatókörében. A globális hatókörben deklarált vagy egy másik osztályba beágyazott nyilvános típusok fordítási időt eredményeznek.

A .winmd fájlnak ugyanazzal a névvel kell rendelkeznie, mint a gyökérnévtérnek. Egy A.B.C.MyClass nevű osztály például csak akkor hozható létre, ha egy A.winmd vagy A.B.winmd vagy A.B.C.winmd nevű metaadatfájlban van definiálva. A végrehajtható fájl nevének nem kell egyeznie a .winmd fájlnévvel.

Típus láthatósága

Egy névtérben a Windows Futtatókörnyezet típusok – a normál C++ típusokkal ellentétben – privát vagy nyilvános akadálymentességgel rendelkeznek. Alapértelmezés szerint az akadálymentesség privát. Csak egy nyilvános típus látható a metaadatok számára, ezért a C++-tól eltérő nyelveken írható alkalmazásokból és összetevőkből használható. A látható típusok szabályai általában szigorúbbak, mint a nem látható típusok szabályai, mivel a látható típusok nem tehetik közzé a .NET-nyelvekben vagy JavaScriptben nem támogatott C++-specifikus fogalmakat.

Megjegyzés:

A metaadatokat csak futásidőben használják a .NET-nyelvek és a JavaScript. Ha egy C++ alkalmazás vagy összetevő egy másik C++ alkalmazással vagy összetevővel beszél – ez magában foglalja a Windows-összetevőket is (amelyek mind C++-ban vannak megírva), akkor nincs szükség a metaadatok futásidejű felhasználására.

A tagok akadálymentessége és láthatósága

Privát ref osztályban, felületen vagy meghatalmazottban a rendszer nem bocsát ki tagokat a metaadatoknak, még akkor sem, ha nyilvános hozzáféréssel rendelkeznek. A nyilvános hiv-osztályokban a metaadatokban lévő tagok láthatóságát a forráskódban lévő akadálymentességtől függetlenül szabályozhatja. A standard C++-hez hasonlóan alkalmazza a minimális jogosultság elvét; csak akkor tegye láthatóvá a tagjait a metaadatokban, ha feltétlenül meg kell lenniük.

A metaadatok láthatóságának és a forráskód akadálymentességének szabályozásához használja az alábbi hozzáférési módosítókat.

Módosító Értelmezés Metaadatoknak bocsátja ki?
private Az alapértelmezett akadálymentesség. Ugyanaz a jelentés, mint a standard C++. Nem
protected Ugyanaz a jelentés, mint a standard C++-ban, mind az alkalmazásban, mind az összetevőben, mind a metaadatokban. Igen
public Ugyanaz a jelentés, mint a standard C++. Igen
public protected protected public Védett akadálymentesség metaadatokban, nyilvános az alkalmazásban vagy összetevőben. Igen
protected private vagy private protected Nem látható a metaadatokban; az alkalmazáson vagy összetevőn belüli védett akadálymentesség.
internal vagy private public A tag nyilvános az alkalmazásban vagy összetevőben, de nem látható a metaadatokban. Nem

Windows futtatókörnyezetbeli névterek

A Windows API a Windows::* névterekben deklarált típusokból áll. Ezek a névterek a Windows számára vannak fenntartva, és nem adhatók hozzá típusok. Az Object Browserben ezeket a névtereket a windows.winmd fájlban tekintheti meg. A névterek dokumentációját a Windows API-ban találja.

C++/CX névterek

A C++/CX bizonyos típusokat határoz meg ezekben a névterekben a Windows futtatókörnyezet típusú rendszer kivetítésének részeként.

Namespace Leírás
alapértelmezett A beépített numerikus és char16-típusokat tartalmazza. Ezek a típusok hatókörben vannak minden névtérben, és using nincs szükség utasításra.
Platform Elsősorban nyilvános típusok, amelyek megfelelnek a Windows futtatókörnyezeti típusok, például Array<T>, String, Guidés Boolean. Speciális segédtípusokat is tartalmaz, például Platform::Agile<T> és Platform::Box<T>.
Platform::Collections A Windows Futtatókörnyezet gyűjteményi felületeit megvalósító konkrét gyűjteményosztályokat IVectorIMaptartalmazza, és így tovább. Ezek a típusok a collection.h fejlécfájlban vannak definiálva, nem a platform.winmd fájlban.
Platform::Details A fordító által használt és nem nyilvános használatra szánt típusokat tartalmazza.

Lásd még

Típusrendszer (C++/CX)