.NET XAML Hizmetleri için XAML ad alanları

XAML ad alanı, bir XML ad alanı tanımını genişleten bir kavramdır. Bir XML ad alanına benzer şekilde, biçimlendirme içindeki bir özniteliği kullanarak bir XAML ad alanı tanımlayabilirsiniz xmlns . Xaml ad alanları, XAML düğüm akışı 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ımlanabileceğini ve XAML şema bağlamları ve .NET XAML Hizmetleri 'nin diğer yönlerini tarafından nasıl kullanıldığını açıklar.

XML ad alanı ve XAML ad alanı

Xaml ad alanı özelleştirilmiş bir XML ad alanıdır. tıpkı XAML, özelleşmiş bir XML biçimidir ve biçimlendirmesi için temel XML formunu kullanır. Biçimlendirme ' de bir XAML ad alanı ve eşlemesini bir xmlns öğeye uygulanan bir öznitelik üzerinden bildirirsiniz. xmlnsBildirim, xaml ad alanının bildirildiği aynı öğeye yapılabilir. Bir öğe için yapılan XAML ad alanı bildirimi, bu öğe için geçerli, bu öğenin tüm öznitelikleri ve bu öğenin tüm alt öğeleri için geçerlidir. Öznitelikler, özniteliği içeren öğeyle aynı olmayan bir XAML ad alanı kullanabilir, bu nedenle öznitelik adının kendisi, biçimlendirme içindeki öznitelik adının bir parçası olarak önekte başvuruda bulunur.

Bir XAML ad alanının bir XML ad alanı ile ayırt edilmesi, bir şemaya başvurmak için bir XML ad alanı veya yalnızca varlıkları ayırt etmek için kullanılabilir. XAML için XAML 'de kullanılan türlerin ve üyelerin, sonunda, son olarak türleri yedeklemek için çözümlenmesi ve XML şema kavramlarının bu özelliğe iyi uygulanmamalıdır. XAML ad alanı, bu tür eşlemesini gerçekleştirmek için XAML şema bağlamının kullanılabilir olması gereken bilgileri içerir.

XAML ad alanı bileşenleri

XAML ad alanı tanımında iki bileşen vardır: önek ve tanımlayıcı. Bu bileşenlerin her biri, bir XAML ad alanının biçimlendirme içinde bildirildiği veya XAML tür sisteminde tanımlandığı durumlarda vardır.

Ön ek, XML 1,0 belirtiminde W3C ad alanlarıtarafından izin verilen herhangi bir dize olabilir. Kurala göre, ön ekler genellikle kısa dizelerdir, çünkü önek tipik bir biçimlendirme dosyasında birçok kez tekrarlanıyor. Birden çok XAML uygulamasında kullanılması amaçlanan bazı XAML ad alanları, belirli geleneksel önekleri kullanır. Örneğin, XAML Language XAML ad alanı genellikle ön ek kullanılarak eşleştirilir x . Varsayılan bir XAML ad alanı tanımlayabilir, burada ön ek, tanım içinde verilmez ancak by.NET XAML Hizmetleri API 'SI tanımlanırsa veya sorgulanırsa boş bir dize olarak gösterilir. Genellikle, XAML uygulayan bir teknolojinin ve onun senaryolarından ve sözcük dağarcıklarını bir dizi ön eki atlama sayısını yükseltmek için varsayılan XAML ad alanı kasıtlı olarak seçilir.

Tanımlayıcı, XML 1,0 belirtiminde W3C ad alanlarıtarafından izin verilen herhangi bir dize olabilir. Kurala göre, XML ad alanları veya XAML ad alanları için tanımlayıcılar genellikle, genellikle protokol nitelikli mutlak bir URI olarak URI biçiminde verilir. Genellikle, belirli bir XAML sözlüğünü tanımlayan sürüm bilgileri yol dizesinin parçası olarak kapsanır. XAML ad alanları, XML URI kuralının ötesinde 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 ya da üyelerin özniteliklerini çözümlemek için bir XAML şeması bağlamı için gereken bilgileri iletişim kurar.

XAML şeması bağlamına bilgi iletişim sağlamak amacıyla XAML ad alanı için tanımlayıcı yine de URI biçiminde olabilir. Ancak, bu durumda URI aynı zamanda belirli bir derlemede veya derlemeler listesinde eşleşen bir tanımlayıcı olarak da bildirilmiştir. Bu, bütünleştirilmiş koda Attributing tarafından yapılır XmlnsDefinitionAttribute . XAML ad alanını tanımlama ve öznitelikli derlemede CLR tabanlı tür çözümleme davranışını destekleme yöntemi, .NET XAML Hizmetleri 'nde varsayılan XAML şeması bağlamı tarafından desteklenir. Daha genel olarak, bu kural XAML şema bağlamının CLR 'yi hangi durumlarda veya clr derlemelerinden CLR özniteliklerini okumak için gerekli olan varsayılan XAML şema bağlamını temel alarak kullanılabilir.

XAML ad alanları, CLR ad alanını ve tür tanımlama derlemesini iletişim kuran bir kural tarafından da tanımlanabilir. Bu kural XmlnsDefinitionAttribute , türler içeren derlemelerde hiçbir attributıon olmadığı durumlarda kullanılır. Bu kural, URI kuralına kıyasla büyük olasılıkla daha karmaşıktır ve bir derlemeye başvurmanın birden çok yolu olduğundan belirsizlik ve çoğaltma için de potansiyeli olur.

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özdiziminin değişmez bir 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 herhangi bir iç nokta karakterini (.) içerir.

AssemblyShortName , XAML 'de yararlı olan türleri tanımlayan bir derlemenin dize adıdır. Tanımlanan XAML ad alanı üzerinden erişilecek türlerin derleme tarafından tanımlanması ve clrnsName tarafından belirtilen clr ad alanı içinde bildirilmesine bekleniyor. Bu dize adı, genellikle tarafından raporlanan bilgileri paraleller AssemblyName.Name .

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

clr-namespace:clrnsName; assembly=assemblyName

AssemblyName , giriş olarak geçerli olan herhangi bir dizeyi temsil eder Assembly.Load(String) . Bu dize kültür, ortak anahtar veya sürüm bilgilerini içerebilir (bu kavramların tanımları için başvuru konusunda tanımlanmıştır Assembly ). COFF biçimi ve kanıt (diğer aşırı yüklemeleri tarafından kullanılan Load ) xaml derleme yükleme amaçlarıyla ilgili değildir; tüm yükleme bilgileri dize olarak sunulmalıdır.

Derleme için bir ortak anahtar belirtmek, XAML güvenliği için yararlı bir tekniktir veya derlemeler basit ad veya bir önbellekte ya da uygulama etki alanında önceden mevcut olduğunda var olabilecek belirsizliği ortadan kaldırır. Daha fazla bilgi için bkz. xaml güvenlik konuları.

XAML ad alanı bildirimleri XAML Hizmetleri API 'SI

XAML Hizmetleri API 'sinde bir XAML ad alanı bildirimi bir nesne tarafından temsil edilir NamespaceDeclaration . Kodda bir XAML ad alanı bildirirken NamespaceDeclaration(String, String) oluşturucuyu çağırın. nsVe prefix parametreleri dizeler olarak belirtilir ve bu parametreler için sağlanacak giriş, bu konuda daha önce SAĞLANDıĞı gibi xaml ad alanı TANıMLAYıCıSıNıN ve xaml ad alanı ön ekinin tanımına karşılık gelir.

Xaml ad alanı bilgilerini bir XAML düğüm akışının parçası olarak veya XAML türü sistemine yönelik diğer erişimle inceleyerek, NamespaceDeclaration.Namespace xaml ad alanı tanımlayıcısını raporlar ve NamespaceDeclaration.Prefix xaml ad alanı önekini raporlar.

XAML düğüm akışında XAML ad alanı bilgileri, uygulandığı varlıktan önce gelen bir XAML düğümü olarak görünebilir. XAML ad alanı bilgilerinin XAML kök öğesinden önce önündeki durumlar da buna dahildir StartObject . 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 bulunması beklenir ve bildirimin bir XAML şeması bağlamı için gereken bilgileri içermesi veya başvurması gerekir. XAML ad alanları yüklenecek derlemeleri belirtmeli ya da ad alanları ve XAML şeması bağlamı tarafından zaten yüklenmiş veya bilinen derlemeler içindeki belirli türleri çözümlemede yardımcı olmalıdır.

Xaml düğüm akışı oluşturmak için xaml şema bağlamı aracılığıyla XAML tür bilgilerinin kullanılabilir olması gerekir. XAML tür bilgileri, oluşturulacak her düğüm için ilgili XAML ad alanı belirlenmeden belirlenemez. Bu noktada, henüz bir tür örneği oluşturulmaz, ancak XAML şema bağlamının, tanımlama bilgisi ve yedekleme türünden bilgi araması gerekebilir. Örneğin, biçimlendirmeyi işlemek için <Party><PartyFavor/></Party> xaml şeması bağlamı öğesinin adını ve türünü belirleyebilmelidir ContentProperty Party ve ayrıca, ve için xaml ad alanı bilgilerini bilmelidir Party PartyFavor . Varsayılan XAML şema bağlamı durumunda, statik yansıma düğüm akışında XAML türü düğümleri oluşturmak için gereken XAML türü sistem bilgilerinin çoğunu raporlar.

Xaml düğüm akışından bir nesne grafiği oluşturmak için, XAML ad alanı bildirimlerinin özgün İşaretlemede kullanılan her XAML öneki için mevcut olması ve XAML düğüm akışına kaydedilmeleri gerekir. Bu noktada örnekler oluşturulur ve true tür eşleme davranışı oluşur.

Xaml ad alanı bilgilerini önceden almanız gerekiyorsa, xaml şema bağlamını kullanmak istediğiniz XAML ad alanının biçimlendirmede tanımlanmadığı durumlarda kullanabileceğiniz bir teknik, için içinde XML ad alanı bildirimleri bildirmektir XmlParserContext XmlReader . Daha sonra bunu XmlReader BIR xaml okuyucu Oluşturucusu veya için giriş olarak kullanın XamlServices.Load(XmlReader) .

.NET XAML hizmetlerinde XAML ad alanı işleme ile ilgili olan diğer iki API 'Ler ve öznitelikleridir XmlnsDefinitionAttribute XmlnsPrefixAttribute . Bu öznitelikler derlemeler için geçerlidir. XmlnsDefinitionAttribute bir XAML şema 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 'yi oluşturan araçlar tarafından kullanılır. Daha fazla bilgi için bkz. özel türler ve kitaplıklar Için xaml ıle ılgılı clr öznitelikleri.

Ayrıca bkz.