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 Or
birleş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 (
Shadows
Visual Basic'te) kullanarak aynı ada sahip devralınannew
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 Or
birleş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 veprotected
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 durumununame
yoksaymak 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 (
Shadows
Visual Basic'te) kullanarak aynı ada sahip devralınannew
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 Or
birleştirin).
Varsayılan bağlayıcı işlemese ParameterModifier de ( modifiers
parametresi), soyut sınıfını System.Reflection.Binder kullanarak işlemini modifiers
gerç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:
- "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.
- 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.
- Ö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 veprotected
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 durumununame
yoksaymak 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ı Item
dizinli 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 Item
olabilir.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin