System.Type.GetProperty yöntemleri

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

GetProperty(String) Yöntem

için arama name büyük/küçük harfe duyarlıdır. Arama, genel statik ve genel örnek özelliklerini içerir.

Bir özelliğin en az bir genel erişimcisi varsa, o özellik yansıma için genel sayılır. Aksi takdirde özelliği özel olarak kabul edilir ve almak için kullanmanız gerekir BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (Visual Basic'te kullanarak değerleri Orbirleştirin).

Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem türü parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek değerini döndürür PropertyInfo .

Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının özelliklerini arar.

AmbiguousMatchException Oluşan durumlar şunlardır:

  • Bir tür, aynı ada ancak farklı sayıda parametreye sahip iki dizinli özellik içerir. Belirsizliği çözmek için parametre türlerini belirten yöntemin aşırı yüklemesini GetProperty kullanın.
  • Türetilmiş bir tür, değiştiriciyi (ShadowsVisual Basic'te) kullanarak aynı ada sahip devralınan new bir özelliği gizleyen bir özellik bildirir. Belirsizliği çözmek için yöntem aşırı yüklemesini GetProperty(String, BindingFlags) kullanın ve aramayı devralınmayan üyelerde kısıtlamak için bayrağını ekleyin BindingFlags.DeclaredOnly .

GetProperty(String, BindingFlags) Yöntem

Bir özelliğin en az bir genel erişimcisi varsa, o özellik yansıma için genel sayılır. Aksi takdirde özelliği özel olarak kabul edilir ve almak için kullanmanız gerekir BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (Visual Basic'te kullanarak değerleri Orbirleştirin).

Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi özelliklerin dahil edilebileceğini tanımlamak için kullanılabilir:

  • İade almak için veya BindingFlags.Static belirtmelisinizBindingFlags.Instance.
  • Genel özellikleri aramaya dahil etmek için belirtin BindingFlags.Public .
  • Genel olmayan özellikleri (özel, iç ve korumalı özellikler) aramaya dahil etmek için belirtin BindingFlags.NonPublic .
  • Hiyerarşiye dahil public etmek ve protected statik üyeleri eklemek için belirtinBindingFlags.FlattenHierarchy; private devralınan sınıflardaki statik üyeler dahil değildir.

Aramanın çalışma biçimini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:

  • BindingFlags.IgnoreCase öğesinin büyük/küçük harf durumunu nameyoksaymak için.
  • BindingFlags.DeclaredOnly yalnızca üzerinde Typebildirilen özellikleri aramak için yalnızca devralınan özellikleri aramaz.

Daha fazla bilgi edinmek için bkz. System.Reflection.BindingFlags.

Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem türü parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek değerini döndürür PropertyInfo .

Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının özelliklerini arar.

AmbiguousMatchException Oluşan durumlar şunlardır:

  • Bir tür, aynı ada ancak farklı sayıda parametreye sahip iki dizinli özellik içerir. Belirsizliği çözmek için parametre türlerini belirten yöntemin aşırı yüklemesini GetProperty kullanın.
  • Türetilmiş bir tür, değiştiriciyi (ShadowsVisual Basic'te) kullanarak aynı ada sahip devralınan new bir özelliği gizleyen bir özellik bildirir. Belirsizliği çözmek için, aramayı devralınmayan üyelerde kısıtlamayı ekleyin BindingFlags.DeclaredOnly .

GetProperty(System.String,System.DüşüncelerIyon. BindingFlags,System. Düşünceler. Ciltçi,System.Type,System.Type[],System. Düşünceler. ParameterModifier[])

Bir özelliğin en az bir genel erişimcisi varsa, o özellik yansıma için genel sayılır. Aksi takdirde özelliği özel olarak kabul edilir ve almak için kullanmanız gerekir BindingFlags.NonPublic | | BindingFlags.InstanceBindingFlags.Static (Visual Basic'te kullanarak değerleri Orbirleştirin).

Varsayılan bağlayıcı işlemese ParameterModifier de ( modifiers parametresi), soyut sınıfını System.Reflection.Binder kullanarak işlemini modifiersgerçekleştiren özel bir bağlayıcı yazabilirsiniz. ParameterModifier yalnızca COM birlikte çalışma aracılığıyla çağrılırken kullanılır ve yalnızca başvuru tarafından geçirilen parametreler işlenir.

Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından Get döndürülen temel sınıfın üyeleri gösterilmektedir.

Üye Türü Statik Statik Olmayan
Oluşturucu Hayır Hayır
Alan Hayır Evet. Bir alan her zaman "ada ve imzaya göre gizle" özelliğindedir.
Etkinlik Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Düşünceler ion özellikleri ada ve imzaya göre gizle olarak ele alır.2
Metot Hayır Evet. Bir yöntem (sanal ve sanal olmayan) "ada göre gizle" veya "ada ve imzaya göre gizle" özelliğinde olabilir.
İç İçe Tür Hayır Hayır
Özellik Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Düşünceler ion özellikleri ada ve imzaya göre gizle olarak ele alır.2

Notlar:

  1. "Ada ve imzaya göre gizle" özelliği, imzanın tüm parçalarını (özel değiştiriciler, dönüş türleri, parametre türleri, başlangıç/bitiş simgeleri ve yönetilmeyen çağrı kuralları dahil) dikkate alır. Bu ikili bir karşılaştırmadır.
  2. Yansıma için, özellikler ve olaylar "ada ve imzaya göre gizle" özelliğindedir. Bu temel sınıfta hem alma hem de ayarlama erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir alma erişimcisi varsa, türetilen sınıf özelliği temel sınıf özelliğini gizler ve siz de temel sınıfta ayarlayıcıya erişemezsiniz.
  3. Özel öznitelikler ortak tür sisteminin parçası değildir.

Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi özelliklerin dahil edilebileceğini tanımlamak için kullanılabilir:

  • İade almak için veya BindingFlags.Static belirtmelisinizBindingFlags.Instance.
  • Genel özellikleri aramaya dahil etmek için belirtin BindingFlags.Public .
  • Genel olmayan özellikleri (özel, iç ve korumalı özellikler) aramaya dahil etmek için belirtin BindingFlags.NonPublic .
  • Hiyerarşiye dahil public etmek ve protected statik üyeleri eklemek için belirtinBindingFlags.FlattenHierarchy; private devralınan sınıflardaki statik üyeler dahil değildir.

Aramanın çalışma biçimini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:

  • BindingFlags.IgnoreCase öğesinin büyük/küçük harf durumunu nameyoksaymak için.
  • BindingFlags.DeclaredOnly yalnızca üzerinde Typebildirilen özellikleri aramak için yalnızca devralınan özellikleri aramaz.

Daha fazla bilgi edinmek için bkz. System.Reflection.BindingFlags.

Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem türü parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek değerini döndürür PropertyInfo .

Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının özelliklerini arar.

Dizin oluşturucular ve varsayılan özellikler

Visual Basic, C#ve C++ dizinli özelliklere erişmek için basitleştirilmiş söz dizimine sahiptir ve dizine alınmış bir özelliğin türü için varsayılan olmasına izin verir. Örneğin, değişken myList bir ArrayListöğesine başvuruyorsa, söz dizimi myList[3] (myList(3) Visual Basic'te) öğesini 3 diziniyle alır. Özelliği aşırı yükleyebilirsiniz.

C# dilinde bu özelliğe dizin oluşturucu adı verilir ve ada göre başvurulamaz. Varsayılan olarak, meta verilerde adlı Itemdizinli bir özellik olarak bir C# dizin oluşturucu görüntülenir. Ancak, bir sınıf kitaplığı geliştiricisi meta verilerdeki dizin oluşturucunun adını değiştirmek için özniteliğini kullanabilir IndexerNameAttribute . Örneğin, sınıfı adlı StringChars[]bir dizin oluşturucuya sahiptir. C# dışındaki diller kullanılarak oluşturulan dizine alınan özelliklerin adları da dışında Itemolabilir.

Bir türün varsayılan özelliği olup olmadığını belirlemek için özniteliğini test etmek için DefaultMemberAttribute yöntemini kullanınGetCustomAttributes(Type, Boolean). türündeyseDefaultMemberAttributeMemberName, özelliği varsayılan özelliğin adını döndürür.