Ad Alanları ve Tür Görünürlüğü (C++/CX)
Ad alanı, ilgili işlevlere sahip türleri gruplandırmak ve kitaplıklardaki ad çakışmalarını önlemek için standart bir C++ yapısıdır. Windows Çalışma Zamanı türü sistemi, kendi kodunuzdakiler de dahil olmak üzere tüm genel Windows Çalışma Zamanı türlerinin ad alanı kapsamında bir ad alanında bildirilmesi gerekir. Genel kapsamda bildirilen veya başka bir sınıfın içinde iç içe yerleştirilmiş genel türler derleme zamanı hatasına neden olur.
.winmd dosyası, kök ad alanının adıyla aynı ada sahip olmalıdır. Örneğin, A.B.C.MyClass adlı bir sınıfın örneği yalnızca A.winmd veya A.B.winmd ya da A.B.C.winmd adlı bir meta veri dosyasında tanımlandığında oluşturulabilir. Yürütülebilir dosyanın adı .winmd dosya adıyla eşleşecek şekilde gerekli değildir.
Tür görünürlüğü
Ad alanında, standart C++ türlerinden farklı olarak Windows Çalışma Zamanı türleri özel veya genel erişilebilirliği vardır. Varsayılan olarak, erişilebilirlik özeldir. Yalnızca genel bir tür meta veriler tarafından görülebilir ve bu nedenle C++ dışındaki dillerde yazılabilen uygulamalardan ve bileşenlerden kullanılabilir. Görünür türler .NET dillerinde veya JavaScript'te desteklenmeyen C++'a özgü kavramları kullanıma sunmadığından, genel olarak görünür türler için kurallar görünür olmayan türlerin kurallarından daha kısıtlayıcıdır.
Not
Meta veriler yalnızca .NET dilleri ve JavaScript tarafından çalışma zamanında tüketilir. Bir C++ uygulaması veya bileşeni başka bir C++ uygulaması veya bileşeniyle konuştuğunda (bu, tümü C++ dilinde yazılmış Olan Windows bileşenlerini içerir) meta verilerin çalışma zamanı tüketimi gerekmez.
Üye erişilebilirliği ve görünürlüğü
Özel başvuru sınıfında, arabirimde veya temsilcide, genel erişilebilirliği olsa bile meta veriye hiçbir üye yayilmez. Genel başvuru sınıflarında, meta verilerdeki üyelerin görünürlüğünü kaynak kodunuzdaki erişilebilirliklerinden bağımsız olarak denetleyebilirsiniz. Standart C++'da olduğu gibi en az ayrıcalık ilkesini uygulayın; üyelerinizi meta verilerde kesinlikle görünür hale getirmeyin.
Hem meta veri görünürlüğünü hem de kaynak kodu erişilebilirliğini denetlemek için aşağıdaki erişim değiştiricileri kullanın.
Değiştirici | Anlamı | Meta veriye mi gönderildi? |
---|---|---|
private |
Varsayılan erişilebilirlik. Standart C++ ile aynı anlama gelir. | Hayır |
protected |
Standart C++ ile aynı anlama gelir, hem uygulama içinde hem de bileşende ve meta verilerde. | Yes |
public |
Standart C++ ile aynı anlama gelir. | Yes |
public protected -veya- protected public |
Meta verilerde korumalı erişilebilirlik, uygulama veya bileşen içinde genel. | Yes |
protected private veya private protected |
Meta verilerde görünmez; uygulama veya bileşen içinde korumalı erişilebilirlik. | |
internal veya private public |
Üye uygulama veya bileşen içinde geneldir, ancak meta verilerde görünmez. | Hayır |
ad alanlarını Windows Çalışma Zamanı
Windows API'si, Windows::* ad alanında bildirilen türlerden oluşur. Bu ad alanları Windows için ayrılmıştır ve bunlara türler eklenemez. Nesne Tarayıcısı'nda bu ad alanlarını windows.winmd dosyasında görüntüleyebilirsiniz. Bu ad alanları hakkında belgeler için bkz . Windows API.
C++/CX ad alanları
C++/CX, Windows Çalışma Zamanı türü sisteminin projeksiyonunun bir parçası olarak bu ad alanları içinde belirli türleri tanımlar.
Ad Alanı | Açıklama |
---|---|
varsayılan | Yerleşik sayısal ve char16 türlerini içerir. Bu türler her ad alanında kapsam içindedir ve hiçbir zaman bir using deyim gerekli değildir. |
Platform |
Öncelikle , , String Guid ve Boolean gibi Array<T> Windows Çalışma Zamanı türlerine karşılık gelen genel türleri içerir. Ayrıca ve Platform::Box<T> gibi Platform::Agile<T> özel yardımcı türleri de içerir. |
Platform::Collections |
, vb. Windows Çalışma Zamanı koleksiyon arabirimlerini uygulayan somut koleksiyon sınıflarını IVector IMap içerir. Bu türler platform.winmd dosyasında değil collection.h üst bilgi dosyasında tanımlanır. |
Platform::Details |
Derleyici tarafından kullanılan ve genel tüketime yönelik olmayan türleri içerir. |