Aracılığıyla paylaş


Type.GetFields Yöntem

Tanım

Geçerli alanının alanlarını alır Type .

Aşırı Yüklemeler

GetFields()

Geçerli tüm ortak alanları döndürür Type .

GetFields(BindingFlags)

Türetilmiş bir sınıfta geçersiz kılınırsa, belirtilen bağlama kısıtlamalarını kullanarak geçerli için tanımlanan alanları arar Type .

GetFields()

Geçerli tüm ortak alanları döndürür Type .

public:
 cli::array <System::Reflection::FieldInfo ^> ^ GetFields();
public:
 virtual cli::array <System::Reflection::FieldInfo ^> ^ GetFields();
public System.Reflection.FieldInfo[] GetFields ();
member this.GetFields : unit -> System.Reflection.FieldInfo[]
abstract member GetFields : unit -> System.Reflection.FieldInfo[]
override this.GetFields : unit -> System.Reflection.FieldInfo[]
Public Function GetFields () As FieldInfo()

Döndürülenler

FieldInfo[]

FieldInfoGeçerli için tanımlanan tüm ortak alanları temsil eden nesne dizisi Type .

-veya- FieldInfoGeçerli bir ortak alan tanımlıysa, türü boş bir dizi Type .

Uygulamalar

Örnekler

Aşağıdaki örnek yönteminin bir kullanımını gösterir GetFields() .

#using <system.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::ComponentModel::Design;

int main()
{
   try
   {
      // Get the type handle of a specified class.
      Type^ myType = ViewTechnology::typeid;

      // Get the fields of the specified class.
      array<FieldInfo^>^myField = myType->GetFields();
      Console::WriteLine( "\nDisplaying fields that have SpecialName attributes:\n" );
      for ( int i = 0; i < myField->Length; i++ )
      {
         // Determine whether or not each field is a special name.
         if ( myField[ i ]->IsSpecialName )
         {
            Console::WriteLine( "The field {0} has a SpecialName attribute.", myField[ i ]->Name );
         }
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0} ", e->Message );
   }
}
using System;
using System.Reflection;
using System.ComponentModel.Design;

class FieldInfo_IsSpecialName
{
    public static void Main()
    {
        try
        {
            // Get the type handle of a specified class.
            Type myType = typeof(ViewTechnology);

            // Get the fields of the specified class.
            FieldInfo[] myField = myType.GetFields();

            Console.WriteLine("\nDisplaying fields that have SpecialName attributes:\n");
            for(int i = 0; i < myField.Length; i++)
            {
                // Determine whether or not each field is a special name.
                if(myField[i].IsSpecialName)
                {
                    Console.WriteLine("The field {0} has a SpecialName attribute.",
                        myField[i].Name);
                }
            }
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception : {0} " , e.Message);
        }
    }
}
Imports System.Reflection
Imports System.ComponentModel.Design

Class FieldInfo_IsSpecialName

    Public Shared Sub Main()
        Try
            ' Get the type handle of a specified class.
            Dim myType As Type = GetType(ViewTechnology)

            ' Get the fields of a specified class.
            Dim myField As FieldInfo() = myType.GetFields()

            Console.WriteLine(ControlChars.Cr + "Displaying fields that have SpecialName attributes:" + ControlChars.Cr)
            Dim i As Integer
            For i = 0 To myField.Length - 1
                ' Determine whether or not each field is a special name.
                If myField(i).IsSpecialName Then
                    Console.WriteLine("The field {0} has a SpecialName attribute.", myField(i).Name)
                End If
            Next i
        Catch e As Exception
            Console.WriteLine("Exception : {0} ", e.Message.ToString())
        End Try
    End Sub
End Class

Açıklamalar

GetFieldsBu yöntem, alanları alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun, alanların döndürüldüğü sıraya bağlı olmaması gerekir, çünkü bu sıra değişir.

Aşağıdaki tabloda, Get bir tür üzerinde yansıtılırken yöntemler tarafından bir temel sınıfın hangi üyelerinin döndürüldüğü 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.
Olay Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
Yöntem 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. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
  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.

Geçerli, Type oluşturulmuş bir genel türü temsil ediyorsa, bu yöntem FieldInfo tür parametrelerine sahip nesneleri uygun tür bağımsız değişkenleri ile birlikte döndürür.

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

Ayrıca bkz.

Şunlara uygulanır

GetFields(BindingFlags)

Türetilmiş bir sınıfta geçersiz kılınırsa, belirtilen bağlama kısıtlamalarını kullanarak geçerli için tanımlanan alanları arar Type .

public:
 abstract cli::array <System::Reflection::FieldInfo ^> ^ GetFields(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.FieldInfo[] GetFields (System.Reflection.BindingFlags bindingAttr);
abstract member GetFields : System.Reflection.BindingFlags -> System.Reflection.FieldInfo[]
Public MustOverride Function GetFields (bindingAttr As BindingFlags) As FieldInfo()

Parametreler

bindingAttr
BindingFlags

Aramanın nasıl yürütü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

FieldInfo[]

FieldInfoGeçerli için tanımlanan, Type belirtilen bağlama kısıtlamalarıyla eşleşen tüm alanları temsil eden nesne dizisi.

-veya- FieldInfoGeçerli öğe için tanımlı bir alan yoksa Type veya tanımlı alanlardan hiçbiri bağlama kısıtlamalarıyla eşleşmezse, türünde boş bir dizi.

Uygulamalar

Örnekler

Aşağıdaki örnek yönteminin bir kullanımını gösterir GetFields(BindingFlags) .

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::InteropServices;
public ref class AttributesSample
{
public:
   void Mymethod( int int1m, [Out]interior_ptr<String^> str2m, interior_ptr<String^> str3m )
   {
       *str2m = "in Mymethod";
   }
};

void PrintAttributes( Type^ attribType, int iAttribValue )
{
   if (  !attribType->IsEnum )
   {
      Console::WriteLine( "This type is not an enum." );
      return;
   }

   array<FieldInfo^>^fields = attribType->GetFields( static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static) );
   for ( int i = 0; i < fields->Length; i++ )
   {
      int fieldvalue = safe_cast<Int32>(fields[ i ]->GetValue( nullptr ));
      if ( (fieldvalue & iAttribValue) == fieldvalue )
      {
         Console::WriteLine( fields[ i ]->Name );
      }
   }
}

int main()
{
   Console::WriteLine( "Reflection.MethodBase.Attributes Sample" );

   // Get the type.
   Type^ MyType = Type::GetType( "AttributesSample" );

   // Get the method Mymethod on the type.
   MethodBase^ Mymethodbase = MyType->GetMethod( "Mymethod" );

   // Display the method name.
   Console::WriteLine( "Mymethodbase = {0}", Mymethodbase );

   // Get the MethodAttribute enumerated value.
   MethodAttributes Myattributes = Mymethodbase->Attributes;

   // Display the flags that are set.
   PrintAttributes( System::Reflection::MethodAttributes::typeid, (int)Myattributes );
   return 0;
}

using System;
using System.Reflection;

class AttributesSample
{
    public void Mymethod (int int1m, out string str2m, ref string str3m)
    {
        str2m = "in Mymethod";
    }

    public static int Main(string[] args)
    {
        Console.WriteLine ("Reflection.MethodBase.Attributes Sample");

        // Get the type.
        Type MyType = Type.GetType("AttributesSample");

        // Get the method Mymethod on the type.
        MethodBase Mymethodbase = MyType.GetMethod("Mymethod");

        // Display the method name.
        Console.WriteLine("Mymethodbase = " + Mymethodbase);

        // Get the MethodAttribute enumerated value.
        MethodAttributes Myattributes = Mymethodbase.Attributes;

        // Display the flags that are set.
        PrintAttributes(typeof(System.Reflection.MethodAttributes), (int) Myattributes);
        return 0;
    }

    public static void PrintAttributes(Type attribType, int iAttribValue)
    {
        if (!attribType.IsEnum)
        {
            Console.WriteLine("This type is not an enum.");
            return;
        }

        FieldInfo[] fields = attribType.GetFields(BindingFlags.Public | BindingFlags.Static);
        for (int i = 0; i < fields.Length; i++)
        {
            int fieldvalue = (int)fields[i].GetValue(null);
            if ((fieldvalue & iAttribValue) == fieldvalue)
            {
                Console.WriteLine(fields[i].Name);
            }
        }
    }
}
Imports System.Reflection

Class AttributesSample

    Public Sub Mymethod(ByVal int1m As Integer, ByRef str2m As String, ByRef str3m As String)
        str2m = "in Mymethod"
    End Sub

    Public Shared Function Main(ByVal args() As String) As Integer
        Console.WriteLine("Reflection.MethodBase.Attributes Sample")

        ' Get the type.
        Dim MyType As Type = Type.GetType("AttributesSample")

        ' Get the method Mymethod on the type.
        Dim Mymethodbase As MethodBase = MyType.GetMethod("Mymethod")

        ' Display the method name.
        Console.WriteLine("Mymethodbase = {0}.", Mymethodbase)

        ' Get the MethodAttribute enumerated value.
        Dim Myattributes As MethodAttributes = Mymethodbase.Attributes

        ' Display the flags that are set.
        PrintAttributes(GetType(System.Reflection.MethodAttributes), CInt(Myattributes))
        Return 0
    End Function 'Main

    Public Shared Sub PrintAttributes(ByVal attribType As Type, ByVal iAttribValue As Integer)
        If Not attribType.IsEnum Then
            Console.WriteLine("This type is not an enum.")
            Return
        End If
        Dim fields As FieldInfo() = attribType.GetFields((BindingFlags.Public Or BindingFlags.Static))
        Dim i As Integer
        For i = 0 To fields.Length - 1
            Dim fieldvalue As Integer = CType(fields(i).GetValue(Nothing), Int32)
            If (fieldvalue And iAttribValue) = fieldvalue Then
                Console.WriteLine(fields(i).Name)
            End If
        Next i
    End Sub
End Class

Açıklamalar

GetFields(BindingFlags)Özellik bilgilerini başarıyla almak için aşırı yüklemede, ve en az bindingAttr bir ile birlikte bağımsız değişken en az bir BindingFlags.Instance ve içermelidir BindingFlags.Static BindingFlags.NonPublic BindingFlags.Public .

BindingFlagsAramaya hangi alanların ekleneceğini tanımlamak için aşağıdaki filtre bayrakları kullanılabilir:

  • BindingFlags.InstanceÖrnek yöntemlerinin dahil edileceğini belirtin.

  • BindingFlags.StaticStatik yöntemlerin dahil edileceğini belirtin.

  • BindingFlags.PublicAramaya genel alanları dahil etmek için belirtin.

  • BindingFlags.NonPublicAramada genel olmayan alanları (özel, iç ve korumalı alanları) dahil etmek için belirtin. Yalnızca temel sınıflarda korunan ve iç alanlar döndürülür; taban sınıflardaki özel alanlar döndürülmedi.

  • BindingFlags.FlattenHierarchyHiyerarşinin dahil edileceğini public ve protected statik üyelerini belirtin; private devralınan sınıflarda statik üyeler dahil değildir.

  • BindingFlags.DefaultBoş bir dizi döndürmek için tek başına belirtin PropertyInfo .

BindingFlagsAramanın nasıl çalıştığını değiştirmek için aşağıdaki değiştirici bayrakları kullanılabilir:

  • BindingFlags.DeclaredOnly yalnızca ' de tanımlanan alanları aramak için Type , yalnızca devralınmış alanlarda değil.

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

GetFieldsBu yöntem, alanları alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun, alanların döndürüldüğü sıraya bağlı olmaması gerekir, çünkü bu sıra değişir.

Geçerli, Type oluşturulmuş bir genel türü temsil ediyorsa, bu yöntem FieldInfo tür parametrelerine sahip nesneleri uygun tür bağımsız değişkenleri ile birlikte döndürür.

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

Ayrıca bkz.

Şunlara uygulanır