XAML-névterek a .NET XAML-szolgáltatásokhoz

Az XAML-névtér egy olyan fogalom, amely egy XML-névtér definícióján bontódik ki. Az XML-névtérhez hasonlóan definiálhat egy XAML-névteret egy xmlns attribútum használatával a korrektúra alkalmazásban. Az XAML-névterek az XAML-csomópont adatfolyamában és más XAML-szolgáltatások API-jaiban is szerepelnek. Ez a témakör meghatározza az XAML-névtér fogalmát, és ismerteti, hogyan definiálhatók az XAML-névterek, és hogyan használhatók az XAML-sémakörnyezetek és a .NET XAML-szolgáltatások egyéb aspektusai.

XML-névtér és XAML-névtér

Az XAML-névtér egy speciális XML-névtér, ahogyan az XAML is az XML speciális formája, és az egyszerű XML-űrlapot használja a korrektúrához. A korrektúra során egy XAML-névteret és annak leképezését deklarálja egy elemre alkalmazott xmlns attribútumon keresztül. A xmlns deklaráció ugyanarra az elemre tehető, amelyben az XAML névtér deklarálva van. Az elemhez megadott XAML-névtér-deklaráció érvényes az adott elemre, az elem összes attribútumára és az elem összes gyermekére. Az attribútumok olyan XAML-névteret használhatnak, amely nem ugyanaz, mint az attribútumot tartalmazó elem, mindaddig, amíg maga az attribútumnév az attribútumnév részeként hivatkozik az előtagra a korrektúra attribútumnevében.

Az XAML-névtér és az XML-névtér megkülönböztetése az, hogy egy XML-névtér használatával hivatkozhat sémára, vagy egyszerűen megkülönböztetheti az entitásokat. Az XAML esetében az XAML-ben használt típusokat és tagokat végső soron a háttértípusokra kell feloldani, és az XML-sémafogalmak nem alkalmazhatók megfelelően erre a képességre. Az XAML-névtér olyan információkat tartalmaz, amelyeket az XAML-sémakörnyezetnek rendelkezésre kell állnia a típusleképezés végrehajtásához.

XAML-névtér összetevői

Az XAML névtérdefiníció két összetevőből áll: egy előtagból és egy azonosítóból. Ezen összetevők mindegyike jelen van, ha egy XAML-névtér deklarálva van a korrektúra vagy az XAML típusú rendszerben.

Az előtag bármilyen sztring lehet, amelyet a W3C-névterek az XML 1.0 specifikációban. Konvenció szerint az előtagok általában rövid sztringek, mivel az előtag egy tipikus korrektúrafájlban sokszor ismétlődik. Egyes XAML-névterek, amelyeket több XAML-implementációban kívánnak használni, bizonyos hagyományos előtagokat használnak. Az XAML nyelv XAML-névterét például általában a xelőtaggal lehet leképezni. Megadhat egy alapértelmezett XAML-névteret, ahol az előtag nem szerepel a definícióban, de üres sztringként jelenik meg, ha az XAML Services API definiálva vagy lekérdezve van by.NET. Az alapértelmezett XAML-névtér általában szándékosan van kiválasztva, hogy az XAML-implementálási technológia és forgatókönyvei és vokabulárjai maximális mennyiségű előtag-kihagyási korrektúrát reklámozzanak.

Az azonosító bármilyen sztring lehet, amelyet a W3C-névterek megengednek az XML 1.0 specifikációban. Konvenció szerint az XML-névterek vagy az XAML-névterek azonosítóit gyakran URI formátumban adják meg, jellemzően protokollalapú abszolút URI-ként. Az adott XAML-szókészletet meghatározó verzióinformációk gyakran az elérési út sztringjének részeként szerepelnek. Az XAML-névterek az XML URI-konvención túl további azonosítókonvenciát is hozzáadnak. XAML-névterek esetén az azonosító közli az XAML-sémakörnyezet által szükséges információkat az adott XAML-névtér elemeiként megadott típusok feloldásához vagy a tagok attribútumainak feloldásához.

Az XAML-sémakörnyezetnek való információközvetítés céljából az XAML-névtér azonosítója továbbra is URI formátumban lehet. Ebben az esetben azonban az URI is egyező azonosítóként van deklarálva egy adott szerelvényben vagy szerelvények listájában. Ez a szerelvényekben a szerelvény XmlnsDefinitionAttributefeladásával történik. Ezt az XAML-névtér azonosítását és a CLR-alapú típusfeloldási viselkedés támogatását az attribútumkészletben az alapértelmezett XAML-sémakörnyezet támogatja a .NET XAML-szolgáltatásokban. Ez a konvenció általánosabban olyan esetekben használható, amikor az XAML sémakörnyezete magában foglalja a CLR-t, vagy az alapértelmezett XAML-sémakörnyezeten alapul, amely a CLR-szerelvények CLR-attribútumainak olvasásához szükséges.

Az XAML-névterek olyan konvencióval is azonosíthatók, amely egy CLR-névteret és egy típusmeghatározó szerelvényt kommunikál. Ez a konvenció olyan esetekben használatos, amikor a típusokat tartalmazó szerelvényekben nincs XmlnsDefinitionAttribute hozzárendelés. Ez a konvenció összetettebb lehet az URI-konvenciónál, és kétértelműséget és duplikációt is rejthet magában, mivel a szerelvényre többféleképpen is hivatkozhat.

A CLR-névteret és szerelvénykonvenciát használó azonosító legalapvetőbb formája a következő:

clr-namespace:clrnsName; assembly=assemblyShortName

clr-namespace: és ; assembly= a szintaxis literális összetevői.

clrnsName egy CLR-névteret azonosító sztringnév. Ez a sztringnév tartalmaz minden olyan belső pont karaktert (.), amely tippeket ad a CLR-névtérről és annak más CLR-névterekhez való viszonyáról.

assemblyShortName az XAML-ben hasznos típusokat meghatározó szerelvény sztringneve. A deklarált XAML-névtéren keresztül elérni kívánt típusokat a szerelvénynek kell meghatároznia, és a clrnsNameáltal megadott CLR-névtéren belül kell deklarálnia. Ez a sztringnév általában a AssemblyName.Nameáltal jelentett adatokkal párhuzamos.

A CLR-névtér és a szerelvény konvenciójának teljesebb definíciója a következő:

clr-namespace:clrnsName; assembly=assemblyName

assemblyName minden olyan sztringet jelöl, amely Assembly.Load(String) bemenetként legális. Ez a sztring tartalmazhat kulturális, nyilvános kulcsot vagy verzióinformációkat (ezeknek a fogalmaknak a definícióit a Assemblyreferenciatémaköre határozza meg). A COFF formátum és a bizonyíték (a Loadmás túlterhelései által használt) nem relevánsak XAML szerelvénybetöltési célokra; minden betöltési információt sztringként kell bemutatni.

A szerelvény nyilvános kulcsának megadása hasznos módszer az XAML biztonságához, vagy az esetleges kétértelműség eltávolításához, ha a szerelvények egyszerű névvel vannak betöltve, vagy előre léteznek a gyorsítótárban vagy az alkalmazástartományban. További információ: XAML biztonsági megfontolások.

XAML-névtérdeklarációk az XAML Services API-ban

Az XAML Services API-ban az XAML-névtér deklarációját egy NamespaceDeclaration objektum jelöli. Ha XAML-névteret deklarál kódban, hívja meg a NamespaceDeclaration(String, String) konstruktort. A ns és prefix paraméterek sztringekként vannak megadva, és az ezekhez a paraméterekhez megadott bemenet megfelel az XAML-névtérazonosító és az XAML-névtér előtagjának a jelen témakörben korábban megadott definíciójának.

Ha XAML-névtéradatokat vizsgál egy XAML-csomópont adatfolyamának részeként vagy az XAML típusú rendszerhez való más hozzáféréssel, NamespaceDeclaration.Namespace jelenti az XAML névtérazonosítót, és NamespaceDeclaration.Prefix jelenti az XAML névtér előtagját.

Egy XAML-csomópont adatfolyamában az XAML-névtér információi olyan XAML-csomópontként jelenhetnek meg, amely megelőzi azt az entitást, amelyre vonatkozik. Ide tartoznak azok az esetek, amikor az XAML-névtér adatai megelőzik az XAML-gyökérelem StartObject. További információ: Az XAML-csomópont streamstruktúráinak és alapfogalmainakismertetése.

A .NET XAML Services API-t használó számos forgatókönyv esetében várhatóan legalább egy XAML-névtérdeklaráció létezik, és a deklarációnak tartalmaznia kell vagy hivatkoznia kell az XAML-sémakörnyezet által megkövetelt információkra. Az XAML-névtereknek meg kell adniuk a betöltendő szerelvényeket, vagy segítséget kell nyújtaniuk az XAML-sémakörnyezet által már betöltött vagy ismert névterek és szerelvények bizonyos típusainak feloldásában.

XAML-csomópontfolyam létrehozásához az XAML-típusadatoknak elérhetőnek kell lenniük az XAML-sémakörnyezeten keresztül. Az XAML-típusadatok nem határozhatók meg anélkül, hogy először meghatározták az egyes létrehozandó csomópontok megfelelő XAML-névterét. Jelenleg még nem jönnek létre típuspéldányok, de előfordulhat, hogy az XAML sémakörnyezetnek információkat kell keresnie a definiáló szerelvény és a háttértípus alapján. A korrektúra <Party><PartyFavor/></Party>feldolgozásához például az XAML-sémakörnyezetnek képesnek kell lennie meghatározni a ContentPropertyParty nevét és típusát, és így ismernie kell a Party és PartyFavorXAML-névtéradatait is. Az alapértelmezett XAML-sémakörnyezet esetében a statikus tükröződés az XAML típusú rendszerinformációk nagy részét jelenti, amelyek az XAML típusú csomópontok csomópontfolyamban való létrehozásához szükségesek.

Ahhoz, hogy objektumgráfot hozzon létre egy XAML-csomópontfolyamból, az XAML-névtér-deklarációknak létezniük kell az eredeti korrektúra által használt és az XAML-csomópontfolyamban rögzített összes XAML-előtaghoz. Ezen a ponton példányok jönnek létre, és valódi típusleképezési viselkedés történik.

Ha előre kell feltöltenie az XAML-névtéradatokat, azokban az esetekben, amikor az XAML-sémakörnyezetet használni kívánt XAML-névtér nem szerepel a korrektúrában, az egyik módszer az XML-névtér-deklarációk deklarálása a XmlParserContext egy XmlReader. Ezután használja ezt a XmlReader egy XAML-olvasó konstruktor vagy XamlServices.Load(XmlReader)bemeneteként.

A .NET XAML-szolgáltatások XAML-névterének kezelésére vonatkozó két másik API a XmlnsDefinitionAttribute és a XmlnsPrefixAttributeattribútum. Ezek az attribútumok a szerelvényekre vonatkoznak. XmlnsDefinitionAttribute XAML-sémakörnyezet használja az URI-t tartalmazó XAML-névtér-deklarációk értelmezéséhez. XmlnsPrefixAttribute XAML-t kibocsátó eszközök használják, hogy egy adott XAML-névtér kiszámítható előtaggal szerializálható legyen. További információ: XAML-Related CLR-attribútumok egyéni típusok és tárak.

Lásd még: