Type.GetConstructors Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli Typeoluşturucularını alır.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| GetConstructors() |
Geçerli Typeiçin tanımlanan tüm ortak oluşturucuları döndürür. |
| GetConstructors(BindingFlags) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen Typeöğesini kullanarak geçerli |
Örnekler
Bu örnekte, iki örnek oluşturucu ve bir statik oluşturucu içeren bir sınıftan aşırı yüklemenin çıkışı GetConstructors() gösterilmektedir.
using System;
using System.Reflection;
public class t {
public t() {}
static t() {}
public t(int i) {}
public static void Main() {
ConstructorInfo[] p = typeof(t).GetConstructors();
Console.WriteLine(p.Length);
for (int i=0;i<p.Length;i++) {
Console.WriteLine(p[i].IsStatic);
}
}
}
type t() =
static do ()
new(i: int) = t ()
let p = typeof<t>.GetConstructors()
printfn $"{p.Length}"
for c in p do
printfn $"{c.IsStatic}"
Imports System.Reflection
Public Class t
Public Sub New()
End Sub
Shared Sub New()
End Sub
Public Sub New(i As Integer)
End Sub
Public Shared Sub Main()
Dim p As ConstructorInfo() = GetType(t).GetConstructors()
Console.WriteLine(p.Length)
Dim i As Integer
For i = 0 To p.Length - 1
Console.WriteLine(p(i).IsStatic)
Next i
End Sub
End Class
Bu kodun çıkışı:
2
False
False
GetConstructors Aşırı yükleme yalnızca Public ve Instancekullandığından, statik oluşturucu ne ifade tarafından for sayılır ne de tarafından IsStaticdeğerlendirilir.
Statik oluşturucuları bulmak için aşırı yüklemeyi kullanın GetConstructors ve aşağıdaki kod örneğinde gösterildiği gibi , BindingFlags.Static, BindingFlags.NonPublicBindingFlags.Instance, birleşimini (mantıksal VEYA) BindingFlags.Publicgeçirin:
using System;
using System.Reflection;
public class t {
public t() {}
static t() {}
public t(int i) {}
public static void Main() {
ConstructorInfo[] p = typeof(t).GetConstructors(
BindingFlags.Public | BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine(p.Length);
for (int i=0;i<p.Length;i++) {
Console.WriteLine(p[i].IsStatic);
}
}
}
open System.Reflection
type t() =
static do ()
new (i: int) = t ()
let p = typeof<t>.GetConstructors(BindingFlags.Public ||| BindingFlags.Static ||| BindingFlags.NonPublic ||| BindingFlags.Instance)
printfn $"{p.Length}"
for c in p do
printfn $"{c.IsStatic}"
Imports System.Reflection
Public Class t
Public Sub New()
End Sub
Shared Sub New()
End Sub
Public Sub New(i As Integer)
End Sub
Public Shared Sub Main()
Dim p As ConstructorInfo() = GetType(T).GetConstructors( _
BindingFlags.Public Or _
BindingFlags.Static Or _
BindingFlags.NonPublic Or _
BindingFlags.Instance)
Console.WriteLine(p.Length)
Dim i As Integer
For i = 0 To p.Length - 1
Console.WriteLine(p(i).IsStatic)
Next i
End Sub
End Class
Şimdi çıkış:
3
False
True
False
GetConstructors()
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Geçerli Typeiçin tanımlanan tüm ortak oluşturucuları döndürür.
public:
cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public:
virtual cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public System.Reflection.ConstructorInfo[] GetConstructors();
public System.Reflection.ConstructorInfo[] GetConstructors();
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo[] GetConstructors();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
member this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
member this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
Public Function GetConstructors () As ConstructorInfo()
Döndürülenler
Türü başlatıcı (statik oluşturucu) dahil değil, geçerli Typeiçin tanımlanan tüm genel örnek oluşturucularını temsil eden bir nesne dizisiConstructorInfo. Geçerli Typeiçin hiçbir genel örnek oluşturucu tanımlanmamışsa veya geçerli Type , genel bir tür veya genel yöntem tanımında bir tür parametresini temsil ederse, boş bir tür ConstructorInfo dizisi döndürülür.
Uygulamalar
- Öznitelikler
Açıklamalar
.NET 6 ve önceki sürümlerinde yöntemi, GetConstructors oluşturucuları bildirim sırası gibi belirli bir sırada döndürmez. Kodunuz, oluşturucuların döndürülme sırasına bağlı olmamalıdır, çünkü bu sıra değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından döndürülen temel sınıf üyeleri gösterilmektedir.
| Üye Türü | Static | Statik Olmayan |
|---|---|---|
| Yapıcı | Hayır | Hayır |
| Alan | Hayır | Evet. Alan her zaman isim ve imzaya göre gizli olur. |
| Etkinlik | Uygulanamaz | Yaygın tür sistemi kuralı, özniteliği uygulayan yöntemlerdeki devralma ile aynıdır. Yansıma, özellikleri ada ve imzaya göre gizle olarak ele alır. Aşağıdaki 2. nota bakın. |
| Yöntem | Hayır | Evet. Bir yöntem (hem sanal hem de sanal olmayan) isim odaklı gizleme veya isim ve imza odaklı gizleme olabilir. |
| İç İçe Yerleştirilmiş Tür | Hayır | Hayır |
| Mülkiyet | Uygulanamaz | Yaygın tür sistemi kuralı, özniteliği uygulayan yöntemlerdeki devralma ile aynıdır. Yansıma, özellikleri ada ve imzaya göre gizle olarak ele alır. Aşağıdaki 2. nota bakın. |
Ad ve imzaya göre gizleme, özel değiştiriciler, dönüş türleri, parametre türleri, sentineller ve yönetilmeyen çağırma kuralları dahil olmak üzere, imzanın tüm parçalarını dikkate alır. Bu ikili karşılaştırmadır.
Yansıma için, özellikler ve olaylar ada ve imzaya göre gizlenir. Temel sınıfta hem get hem de set erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir get erişimcisi varsa, türetilmiş sınıf özelliği temel sınıf özelliğini gizler ve temel sınıfta ayarlayıcıya erişemezsiniz.
Özel öznitelikler ortak tür sisteminin bir parçası değildir.
Bu yöntem aşırı yüklemesi, (BindingFlags.InstanceOrBindingFlags.Public Visual Basic'te) ile BindingFlags.PublicBindingFlags.Instance | yöntem aşırı yüklemesini çağırır.GetConstructors(BindingFlags) Sınıf başlatıcılarını (statik oluşturucu) bulamaz. Sınıf başlatıcılarını bulmak için, öğesini alan BindingFlagsve ( Visual Basic'te)BindingFlags.StaticBindingFlags.NonPublicOr belirten BindingFlags.Static | BindingFlags.NonPublic bir aşırı yükleme kullanın. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.
Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem nesneleri uygun tür bağımsız değişkenleriyle değiştirilen tür parametreleriyle döndürür ConstructorInfo . Örneğin, sınıfın C<T> bir oluşturucu (Sub New(ByVal t1 As T)C(T t1) Visual Basic'te) varsa, üzerinde C<int> çağrısı GetConstructors C# (Sub New(ByVal t1 As Integer) Visual Basic'te) öğesini temsil C(int t1) eden bir ConstructorInfo döndürür.
Geçerli Type bir genel tür parametresini temsil ederse, GetConstructors yöntem boş bir dizi döndürür.
Ayrıca bkz.
- ConstructorInfo
- GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
Şunlara uygulanır
GetConstructors(BindingFlags)
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen Typeöğesini kullanarak geçerli BindingFlagsiçin tanımlanan oluşturucuları arar.
public:
abstract cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
public abstract System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr);
[System.Runtime.InteropServices.ComVisible(true)]
public abstract System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)>]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
Public MustOverride Function GetConstructors (bindingAttr As BindingFlags) As ConstructorInfo()
Parametreler
- bindingAttr
- BindingFlags
Aramanın nasıl yapıldığını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.
-veya-
Default boş bir dizi döndürmek için.
Döndürülenler
Geçerli Type için tanımlanan ve tanımlanmışsa tür başlatıcısı da dahil olmak üzere belirtilen bağlama kısıtlamalarıyla eşleşen tüm oluşturucuları temsil eden bir nesne dizisiConstructorInfo. Geçerli Typeiçin hiçbir oluşturucu tanımlanmadıysa, tanımlı oluşturuculardan hiçbiri bağlama kısıtlamalarıyla eşleşmiyorsa veya geçerliType, genel bir tür veya genel yöntem tanımında tür parametresini temsil ederse boş bir tür dizisi ConstructorInfo döndürür.
Uygulamalar
- Öznitelikler
Açıklamalar
bindingAttr yalnızca ortak oluşturucuların mı yoksa hem genel hem de genel olmayan oluşturucuların mı döndürüleceğini belirtmek için kullanılabilir.
Aşağıdaki BindingFlags filtre bayrakları, aramaya eklenecek oluşturucuları tanımlamak için kullanılabilir:
Sınıf başlatıcısını (statik oluşturucu) almak için ile
BindingFlags.NonPublicbirlikte belirtinBindingFlags.Static. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.Örnek oluşturucularını almak için ve
BindingFlags.NonPublicöğesininBindingFlags.Publicbir veya her ikisiyle birlikte belirtinBindingFlags.Instance.
Daha fazla bilgi için bkz. System.Reflection.BindingFlags.
.NET 6 ve önceki sürümlerinde yöntemi, GetConstructors oluşturucuları bildirim sırası gibi belirli bir sırada döndürmez. Kodunuz, oluşturucuların döndürülme sırasına bağlı olmamalıdır, çünkü bu sıra değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem nesneleri uygun tür bağımsız değişkenleriyle değiştirilen tür parametreleriyle döndürür ConstructorInfo . Örneğin, sınıfın C<T> bir oluşturucu (Sub New(ByVal t1 As T)C(T t1) Visual Basic'te) varsa, üzerinde C<int> çağrısı GetConstructors C# (Sub New(ByVal t1 As Integer) Visual Basic'te) öğesini temsil C(int t1) eden bir ConstructorInfo döndürür.
Geçerli Type bir genel tür parametresini temsil ederse, GetConstructors yöntem boş bir dizi döndürür.
Ayrıca bkz.
- ConstructorInfo
- BindingFlags
- DefaultBinder
- GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])