Aracılığıyla paylaş


.NET XAML Hizmetleri için XAML Ad Alanları

XAML ad alanı, XML ad alanının tanımına göre genişleyen bir kavramdır. XML ad alanına benzer şekilde, işaretlemedeki bir özniteliği kullanarak bir xmlns XAML ad alanı tanımlayabilirsiniz. XAML ad alanları, XAML düğümü akışında ve diğer XAML Hizmetleri API'lerinde de temsil edilir. Bu konu, XAML ad alanı kavramını tanımlar ve XAML ad alanlarının nasıl tanımlandığını ve XAML şema bağlamları ve .NET XAML Hizmetlerinin diğer yönleri tarafından nasıl kullanıldığını açıklar.

XML Ad Alanı ve XAML Ad Alanı

XAML ad alanı, XAML'nin özel bir XML biçimi olması ve işaretlemesi için temel XML formunu kullanması gibi özel bir XML ad alanıdır. İşaretlemede, bir öğeye uygulanan bir öznitelik aracılığıyla xmlns bir XAML ad alanı ve eşlemesi bildirirsiniz. Bildirimi, xmlns XAML ad alanının bildirilmesiyle aynı öğeye yapılabilir. Bir öğeye yapılan XAML ad alanı bildirimi, bu öğe, bu öğenin tüm öznitelikleri ve bu öğenin tüm alt öğeleri için geçerlidir. Öznitelik adı, işaretlemedeki öznitelik adının bir parçası olarak önek başvurusunda bulunduğu sürece öznitelikler özniteliğini içeren öğeyle aynı olmayan bir XAML ad alanı kullanabilir.

XAML ad alanının XML ad alanıyla farkı, xml ad alanının bir şemaya başvurmak veya varlıkları ayırt etmek için kullanılabilmesidir. XAML için, XAML'de kullanılan türlerin ve üyelerin sonunda yedekleme türlerine çözümlenmesi gerekir ve XML şema kavramları bu özelliğe iyi uygulanmaz. XAML ad alanı, bu tür eşlemeyi gerçekleştirmek için XAML şema bağlamında kullanılabilir olması gereken bilgileri içerir.

XAML Ad Alanı Bileşenleri

XAML ad alanı tanımının iki bileşeni vardır: ön ek ve tanımlayıcı. Bu bileşenlerin her biri, bir XAML ad alanı işaretlemede bildirildiğinde veya XAML türü sisteminde tanımlandığında bulunur.

Ön ek, XML 1.0 belirtiminde W3C Ad Alanları tarafından izin verilen herhangi bir dize olabilir. Kural gereği, ön ek tipik bir işaretleme dosyasında birçok kez tekrarlandığından, ön ekler genellikle kısa dizelerdir. Birden çok XAML uygulamasında kullanılması amaçlanan belirli XAML ad alanları belirli geleneksel ön ekleri kullanır. Örneğin, XAML dili XAML ad alanı genellikle ön eki xkullanılarak eşlenir. Varsayılan bir XAML ad alanı tanımlayabilirsiniz; burada ön ek tanımda verilmez, ancak tanımlandığında veya sorgulanırsa boş bir dize olarak temsil edilir by.NET XAML Hizmetleri API'sinde. Genellikle, varsayılan XAML ad alanı, XAML uygulayan bir teknoloji ile senaryoları ve sözlükleri tarafından en üst düzeye çıkarılmış miktarda ön ek atlama işaretlemesini yükseltmek için kasıtlı olarak seçilir.

Tanımlayıcı, XML 1.0 belirtiminde W3C Ad Alanları tarafından izin verilen herhangi bir dize olabilir. Kural gereği, XML ad alanlarının veya XAML ad alanlarının tanımlayıcıları genellikle protokole uygun mutlak URI olarak URI biçiminde verilir. Genellikle, belirli bir XAML sözcük dağarcığını tanımlayan sürüm bilgileri yol dizesinin bir parçası olarak ele alınır. XAML ad alanları, XML URI kuralının ötesine ek bir tanımlayıcı kuralı ekler. XAML ad alanları için tanımlayıcı, XAML ad alanı altında öğe olarak belirtilen türleri çözümlemek veya üyelere yönelik öznitelikleri çözümlemek için bir XAML şema bağlamı tarafından gereken bilgileri iletir.

Bilgileri bir XAML şema bağlamı ile iletişim kurmak amacıyla, XAML ad alanının tanımlayıcısı yine de URI biçiminde olabilir. Ancak bu durumda URI, belirli bir derlemede veya derleme listesinde eşleşen tanımlayıcı olarak da bildirilir. Bu, ile derlemesi attributing tarafından derlemelerde XmlnsDefinitionAttributeyapılır. Öznitelikli derlemede XAML ad alanını tanımlama ve CLR tabanlı tür çözümleme davranışını destekleme yöntemi, .NET XAML Hizmetleri'nde varsayılan XAML şema bağlamı tarafından desteklenir. Daha genel olarak bu kural, XAML şema bağlamı CLR'yi bir araya getirdiği veya CLR derlemelerinden CLR özniteliklerini okumak için gerekli olan varsayılan XAML şema bağlamını temel aldığı durumlar için kullanılabilir.

XAML ad alanları, CLR ad alanı ve tür tanımlama derlemesi ile iletişim kuran bir kuralla da tanımlanabilir. Bu kural, tür içeren derlemelerde herhangi bir ilişkilendirmenin mevcut olmadığı XmlnsDefinitionAttribute durumlarda kullanılır. Bu kural potansiyel olarak URI kuralından daha karmaşıktır ve ayrıca bir derlemeye başvurmanın birden çok yolu olduğundan belirsizlik ve yineleme potansiyeline sahiptir.

CLR ad alanını ve derleme kuralını kullanan bir tanımlayıcının en temel biçimi aşağıdaki gibidir:

clr-namespace:clrnsName; assembly=assemblyShortName

clr-namespace: ve ; assembly= söz diziminin değişmez bileşenleridir.

clrnsName , bir CLR ad alanını tanımlayan dize adıdır. Bu dize adı, CLR ad alanı ve diğer CLR ad alanlarıyla ilişkisi hakkında ipuçları sağlayan tüm iç nokta karakterlerini (.) içerir.

assemblyShortName , XAML'de yararlı olan türleri tanımlayan bir derlemenin dize adıdır. Bildirilen XAML ad alanı üzerinden erişilecek türlerin derleme tarafından tanımlanması ve clrnsName tarafından belirtilen CLR ad alanı içinde bildirilmesi beklenir. Bu dize adı genellikle tarafından bildirilen bilgileri paralel hale getirmektedir AssemblyName.Name.

CLR ad alanı ve derleme kuralının daha eksiksiz bir tanımı aşağıdaki gibidir:

clr-namespace:clrnsName; assembly=assemblyName

assemblyName , giriş olarak yasal olan herhangi bir Assembly.Load(String) dizeyi temsil eder. Bu dize kültür, ortak anahtar veya sürüm bilgilerini içerebilir (bu kavramların tanımları için Assemblybaşvuru konusunda tanımlanır). COFF biçimi ve kanıt (diğer aşırı yüklemeler Loadtarafından kullanıldığı gibi) XAML derleme yükleme amaçlarıyla ilgili değildir; tüm yük bilgileri dize olarak sunulmalıdır.

Derleme için ortak anahtar belirtmek, XAML güvenliği için veya derlemeler basit bir adla yüklenirse veya bir önbellek ya da uygulama etki alanında önceden mevcutsa mevcut olabilecek belirsizliği ortadan kaldırmak için kullanışlı bir tekniktir. Daha fazla bilgi için bkz . XAML Güvenlik Konuları.

XAML Hizmetleri API'sindeki XAML Ad Alanı Bildirimleri

XAML Hizmetleri API'sinde bir XAML ad alanı bildirimi bir NamespaceDeclaration nesneyle temsil edilir. Kodda bir XAML ad alanı bildiriyorsanız oluşturucuyu NamespaceDeclaration(String, String) çağırırsınız. ns ve prefix parametreleri dize olarak belirtilir ve bu parametreler için sağlanacak giriş, bu konuda daha önce belirtildiği gibi XAML ad alanı tanımlayıcısı ve XAML ad alanı ön eki tanımına karşılık gelir.

XAML düğüm akışının parçası olarak veya XAML tür sistemine başka bir erişim aracılığıyla XAML ad alanı bilgilerini inceliyorsanız, NamespaceDeclaration.Namespace XAML ad alanı tanımlayıcısını raporlar ve NamespaceDeclaration.Prefix XAML ad alanı ön ekini raporlar.

XAML düğüm akışında XAML ad alanı bilgileri, uygulandığı varlığın önüne gelen bir XAML düğümü olarak görünebilir. Bu, XAML ad alanı bilgilerinin XAML kök öğesinden önce StartObject geldiği durumları içerir. Daha fazla bilgi için bkz . XAML Düğümü Akış Yapılarını ve Kavramlarını Anlama.

.NET XAML Hizmetleri API'si kullanan birçok senaryo için en az bir XAML ad alanı bildiriminin olması beklenir ve bildirimin XAML şema bağlamı için gereken bilgileri içermesi veya bunlara başvurması gerekir. XAML ad alanlarının yüklenecek derlemeleri belirtmesi veya zaten yüklenmiş veya XAML şema bağlamı tarafından bilinen ad alanları ve derlemeler içindeki belirli türlerin çözülmesine yardımcı olması gerekir.

XAML düğüm akışı oluşturmak için XAML türü bilgilerinin XAML şema bağlamı aracılığıyla kullanılabilir olması gerekir. XAML türü bilgileri, önce oluşturulacak her düğüm için ilgili XAML ad alanı belirlenmeden belirlenemez. Bu noktada, henüz hiçbir tür örneği oluşturulmamıştır, ancak XAML şema bağlamının tanımlama derlemesi ve yedekleme türünden bilgi araması gerekebilir. Örneğin, işaretlemeyi <Party><PartyFavor/></Party>işlemek için XAML şema bağlamının öğesinin adını ve türünü ContentPropertyPartybelirleyebilmesi ve bu nedenle ve PartyFavoriçin Party XAML ad alanı bilgilerini de bilmesi gerekir. Varsayılan XAML şema bağlamı söz konusu olduğunda, statik yansıma düğüm akışında XAML türü düğümler oluşturmak için gereken XAML türü sistem bilgilerinin çoğunu raporlar.

Bir XAML düğüm akışından nesne grafı oluşturmak için, özgün işaretlemede kullanılan ve XAML düğümü akışına kaydedilen her XAML öneki için XAML ad alanı bildirimleri bulunmalıdır. Bu noktada örnekler oluşturulur ve gerçek tür eşleme davranışı gerçekleşir.

XAML ad alanı bilgilerini önceden doldurmanız gerekiyorsa, kullanmak üzere XAML şema bağlamını amaçladığınız XAML ad alanının işaretlemede tanımlanmadığı durumlarda, kullanabileceğiniz bir teknik için XmlReaderiçinde XML ad alanı bildirimleri XmlParserContext bildirmektir. Ardından bunu XmlReader bir XAML okuyucu oluşturucusu veya XamlServices.Load(XmlReader)için giriş olarak kullanın.

.NET XAML Hizmetleri'nde XAML ad alanı işlemeyle ilgili diğer iki API ve XmlnsPrefixAttributeöznitelikleridirXmlnsDefinitionAttribute. Bu öznitelikler derlemeler için geçerlidir. XmlnsDefinitionAttribute bir XAML şeması bağlamı tarafından URI içeren herhangi bir XAML ad alanı bildirimini yorumlamak için kullanılır. XmlnsPrefixAttribute , belirli bir XAML ad alanının öngörülebilir bir ön ek ile seri hale getirilebilmesi için XAML yayan araçlar tarafından kullanılır. Daha fazla bilgi için bkz . Özel Türler ve Kitaplıklar için XAML ile İlgili CLR Öznitelikleri.

Ayrıca bkz.