Tür Tanımlayıcısına Genel Bakış

TypeDescriptor Mimari becerilerini geliştirir.net yansıma.

Türü tanımlayıcısı mimarisi

TypeDescriptor Mimarisi temel yansıma motoru üzerinde kurulmuştur ve ek kurallar ve özellikler ekler.Örneğin, TypeDescriptor sınıf birleştirme extender özelliklerini destekleyen bir IContainer, ve filtreleme özellikler ve olaylar aracılığıyla da destekler bir IDesigner.

Buna ek olarak, TypeDescriptor mimarisi, çeşitli yetenekleri sağlar.Aşağıdaki tabloda, mimari 's yeteneklerini gösterir.

Yeteneği

Description

Örneğini değiştirme

Başka bir tür istendiğinde oluşturulacak rasgele bir türü sağlar.

Meta verileri değiştirme

Değiştirilecek bir nesnenin meta verileri sağlar.

Öznitelik yeniden yönlendirme

Dinamik olarak belirtilen öznitelikleri sağlar.

Hedef değiştirme ve gölgeleme

Bir nesne için başka bir stand etkinleştirir.

Genişletilmiş tür tanımlayıcı desteği

Başka nesneler tarafından eklenen nesne özelliklerine erişim sağlar.

Bu yetenekleri desteklemek için TypeDescriptor sınıfı ile çeşitli özelliklerinden sıkı bir şekilde tümleşik.net Framework bileşen modeli.com nesneleri, extender sağlayıcıları, tasarımcıları ve clr özellikleri ile uyumlu.

[!NOT]

Kullanabileceğiniz TypeDescriptor mimari tasarım zamanı kodunuzu yanı sıra, çalışma zamanı kodunuzu.

Genişletilebilirlik, desteklemek için TypeDescriptor adlı bir yardımcı sınıf sınıf olan TypeDescriptionProvider Yardımcısı öznitelik adı verilen ve TypeDescriptionProviderAttribute.Kullanabileceğiniz bir TypeDescriptionProviderAttribute tasarım hedeflerinizi karşılayan meta verileri sergilemek için tamamen farklı bir şekilde tanıtmak için bir sınıf üzerinde.

TypeDescriptionProvider sınıfı

TypeDescriptionProvider Sınıfı kabul için bir eklenti olarak TypeDescriptor sınıfı.Belirli bir örneği için TypeDescriptor, birden fazla tür tanımı sağlayıcı sınıflarını, tüm sunan meta verileri olabilir TypeDescriptor.

TypeDescriptionProvider özniteliği

TypeDescriptionProviderAttribute Bir sınıf üzerinde yerleştirebileceğiniz bir özniteliğidir.Bu öznitelik türü ile ilişkilendirilmiş bir özel tür açıklaması sağlayıcısı olduğunu belirtmek için kullanılır.Öznitelik türü açıklama sağlayıcısını yüklemeye sırayla meta veriler aracılığıyla bir yol sağlar.Ne zaman bu tür geçen herhangi bir API TypeDescriptor sınıfı TypeDescriptor bu öznitelik bulur, içinde açıklanan tür açıklaması sağlayıcısı örneği oluşturur ve sağlayıcı iç tablolarına takar TypeDescriptor.Bunu yaptıktan sonra TypeDescriptor API işleme devam eder.İsteğe bağlı olarak bir özel tür açıklaması sağlayıcısı otomatik olarak yüklemek bir tür işleme sağlar.

Türü tanımlayıcısı yetenekleri

TypeDescriptor Mimarisi tarafından sağlananların yeteneklerini etkinleştirir.net Framework yansıtma.

Örneğini değiştirme

Bir tür oluşturmak istiyor ancak gerçekten oluşturulmadan türü ne istediğiniz gelen farklı örnek alternatifi ortaya çıkar.Örnek alternatifi gerçekleştirilen tüm aramalar değiştirdiğinizde new yapılan çağrılarla CreateInstance yöntemi.Bu yöntemin içindeki iç tabloları arar TypeDescriptor için bir TypeDescriptionProvider verilen veri türüyle ilişkilendirilmiş olan nesne.Bir tane bulursa, bu nesneye çağrı temsilcisini seçer.

Meta verileri değiştirme

Bir veya daha fazla nesneleri için kullanılabilir meta verilerini değiştirmek istediğiniz meta verileri değiştirme oluşur.Meta veri değişimi için ortak bir uygulama tasarımcıları uygulamasıdır.Meta verileri değiştirme değiştirilerek üzerinde aşağıdaki yöntemleri kullanarak eklenebilir ve türü açıklama sağlayıcıları ile TypeDescriptor:

Öznitelik yeniden yönlendirme

Birkaç durum vardır.net Framework nesne modeli burada bir özellik türü bilerek belirsiz olacak şekilde yapılır.Örneğin, DataSource özelliği DataGridView olarak sınıf yazılı object.Bu tasarım düzenleyemeyeceğiniz girişi kabul etmek için veri kaynağı izin verir, ancak özelliği özelliklerini açıklamak için meta verileri eklemek için tipik bir yer sağlar.Her veri kaynağı özellik boyunca.net Framework, aynı meta veri türü dönüştürücüler ve kullanıcı arabirimi (UI) türü Düzenleyicileri için gerek duyuyor.

AttributeProviderAttribute Sınıfı bu durumu giderir.Bu öznitelik özelliği yerleştirildiğinde, özellik tanımlayıcısı'nın özniteliklerini almak için kuralları değiştirmek Attributes koleksiyonu.Genelde, özellik tanımlayıcısı yerel öznitelikleri toplar ve bunları özellik türü öznitelikleri ile birleştirir.Zaman AttributeProviderAttribute özniteliği uygulanır, öznitelikleri dönen türünden alınan AttributeProviderAttribute, gerçek özellik türünden.AttributeProviderAttribute Üzerindeki veri kaynaklarına veri kaynağının belirli türüne işaret için kullanılan IListSource, uygun meta verileri yerleştirilir ve IListSource veri bağlama etkinleştirmek için.Bu yeniden yönlendirme dışarıdaki kolayca tüm veri kaynakları için meta verileri eklemek için Visual Studio gibi sağlar.

Bildirilen bir türünden alınan öznitelikleri de AttributeProviderAttribute özelliğinde özelliğin türü öznitelikleri ve öznitelikleri arasında bir öncelik vardır.Kullanılabilir öznitelikler kümesini aşağıdaki listede gösterildiği gibi öncelik sırasına birleşmesi gibidir:

  1. Özellik öznitelikleri

  2. Öznitelik sağlayıcı öznitelikleri

  3. Özellik türü öznitelikleri

Hedef değiştirme ve gölgeleme

Bir nesne için başka kısaltılmışıdır hedef değiştirme oluşur.Hedef değiştirme ortak bir uygulama tasarımcıları uygulamasıdır.

İçinde.net Framework Tasarımcı mimarisi, kendisiyle ilişkilendirilmiş bir tasarımcı bir bileşen olabilir.Bu tasarımcının uygulayabilirsiniz IDesignerFilter ve kendi özellikleri sağlar.Bu özellikler, tasarımcı ilişkilendirildiği bileşen için ayarlanan özellik birleştirilir.Bu özellikler bileşenin yeni olabilir.Bunlar da aynı adda ve türde bileşeni önceden tanımlanmış özellikler olarak sahip olabilirsiniz.Yeni özellik adını ve türünü varolan bir özellik olarak paylaşır, adlı gölgeleme, tasarımcı gizlediğinden veya gölgeler, bileşeninde varolan bir özellik.Gölgeleme özelliğini aşağıdaki çizimde gösterilmektedir.

Metin özelliğini gölgeleme

Burada, bileşenin iki özellik sunar ve tasarımcı iki özellik de sunar.Text Özelliği hem Tasarımcı hem de bileşeni sunulmakta ve gölgeli.Bir arama sonucunu GetProperties üç özellikleri.Bir bileşeni bulunmaktadır ve diğer iki Tasarımcı mevcut.

Bu filtreleme özelliği kullanılarak gerçekleştirilir ITypeDescriptorFilterService, tasarım yüzeyine uygulayan.TypeDescriptorözelliğe bir değer ayarlamak üzere zaman zaman yetenekleri gereklidir.Bir değer ayarlamak için kod Grid özelliği şuna benzeyebilir:

    gridProp.SetValue(component, value);

Özellik gerçek türü bilgilerini, Tasarımcısı, bileşen örneğine işaret eder.Aslında özelliğini ayarlamak için bir yansıma çağrı yapıldıysa, bileşen örneği Tasarımcı türü eşleşmediğinden çağrı hedef çağırma özel durum.

TypeDescriptor Sınıfının içerdiği mantığı, bu durum bir çözüm bulmak için vardır.Özellik araması yapılırken, TypeDescriptor class üye türü geçirilen nesnesinin bir örneği olup olmadığını denetler.Öyleyse devam arama sağlar.Yoksa sınıf nesnesi için tasarımcı dener ve tasarımcı bulunabilir ve doğru türde ise, sınıf Tasarımcı örneğiyle bileşen örneği değiştirir.

Aşağıdaki yöntemlerden TypeDescriptor hedef değiştirme desteği:

Genişletilmiş tür tanımlayıcısı desteği

GetExtendedTypeDescriptor Yöntemi, belirtilen nesne için bir genişletilmiş özel tür tanımlayıcısı döndürür.Genişletilmiş tür tanımlayıcı diğer nesneleri, bu nesneye eklediğiniz ancak gerçekte nesnesinde tanımlı olmayan özellikler sunan özel tür bir tanımlayıcıdır.Örneğin,.net Framework bileşen modeli nesneleri saðlamanýzý IExtenderProvider arabirimi aynı bulunan diğer nesnelere özellikler iliştirebilirsiniz IContainer.GetTypeDescriptor Yöntemi bu ekstra genişletilmiş özellikleri sağlayan bir tür tanımlayıcısı döndürmek değil ama GetExtendedTypeDescriptor bunlar genişletilmiş özellikler kümesini döndürür.TypeDescriptor Sınıf, bu iki özellik koleksiyonları sonuçlarını otomatik olarak birleştirir.

[!NOT]

Rağmen.net Framework bileşen modeli yalnızca genişletilmiş özellikleri destekleyen GetExtendedTypeDescriptor tür açıklaması sağlayıcısı destekliyorsa, genişletilmiş öznitelikleri ve gibi olaylar için kullanılabilir.

Ayrıca bkz.

Başvuru

TypeDescriptor

TypeDescriptionProvider

TypeDescriptionProviderAttribute

ICustomTypeDescriptor

CustomTypeDescriptor

IContainer

IDesigner

Diğer Kaynaklar

Tasarım Zamanı Desteği Sunma