FieldInfo.IsPublic 属性

获取一个值,通过该值指示此字段是否为公共字段。

**命名空间:**System.Reflection
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public ReadOnly Property IsPublic As Boolean
用法
Dim instance As FieldInfo
Dim value As Boolean

value = instance.IsPublic
public bool IsPublic { get; }
public:
virtual property bool IsPublic {
    bool get () sealed;
}
/** @property */
public final boolean get_IsPublic ()
public final function get IsPublic () : boolean

属性值

如果此字段为公共字段,则为 true;否则为 false

备注

可从能够看见公共字段的相应类的任何位置访问公共字段。

设置 FieldAttributes.Public 属性 (Attribute) 时设置 IsPublic 属性 (Property)。

若要获取 IsPublic 属性 (Property),请先获取 Type 类。从 Type 获取 FieldInfo。从 FieldInfo 获取 IsPublic 属性 (Property)。如果该字段是非公共字段,则它将受到保护,并且不易访问。若要访问非公共字段,请将 BindingFlags 设置为 NonPublic,指定 BindingFlags.InstanceBindingFlags.Static,并将此用于 GetField 方法。

示例

下面的示例返回一个值,该值指示类的字段是公共字段还是私有字段。

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic


' Make two fields.
Public Class Myfielda
    ' Make a private field.
    Private SomeField As String = "private field"

    Public ReadOnly Property Field() As String
        Get
            Return SomeField
        End Get
    End Property
End Class 'Myfielda

Public Class Myfieldb
    ' Make a public field.
    Public SomeField As String = "public field"
End Class 'Myfieldb

Public Class Myfieldinfo

    Public Shared Function Main() As Integer
        Console.WriteLine("Reflection.FieldInfo")
        Console.WriteLine()
        Dim Myfielda As New Myfielda()
        Dim Myfieldb As New Myfieldb()

        ' Get the Type and FieldInfo.
        Dim MyTypea As Type = GetType(Myfielda)
        Dim Myfieldinfoa As FieldInfo = MyTypea.GetField("SomeField", _
            BindingFlags.NonPublic Or BindingFlags.Instance)
        Dim MyTypeb As Type = GetType(Myfieldb)
        Dim Myfieldinfob As FieldInfo = MyTypeb.GetField("SomeField")

        ' Get and display the IsPublic and IsPrivate property values.
        Console.WriteLine("{0}.{1} - {2}", MyTypea.FullName, Myfieldinfoa.Name, _
            Myfielda.Field)
        Console.WriteLine("   IsPublic = {0}", Myfieldinfoa.IsPublic)
        Console.WriteLine("   IsPrivate = {0}", Myfieldinfoa.IsPrivate)
        Console.WriteLine()
        Console.WriteLine("{0}.{1} - {2}", MyTypeb.FullName, Myfieldinfob.Name, _
            Myfieldb.SomeField)
        Console.WriteLine("   IsPublic = {0}", Myfieldinfob.IsPublic)
        Console.WriteLine("   IsPrivate = {0}", Myfieldinfob.IsPrivate)

        Return 0
    End Function 'Main
End Class 'Myfieldinfo
using System;
using System.Reflection;


 // Make two fields.
public
    class Myfielda // private
{
    private string SomeField = "private field";
    public string Field
    {
        get{return SomeField;}
    }
}

public
    class Myfieldb // public
{
    public string SomeField = "public field";
}
 
public
    class Myfieldinfo
{
    public static int Main()
    {
        Console.WriteLine("\nReflection.FieldInfo");
        Myfielda Myfielda = new Myfielda();
        Myfieldb Myfieldb = new Myfieldb();
  
        // Get the Type and FieldInfo.
        Type MyTypea = typeof(Myfielda);
        FieldInfo Myfieldinfoa = MyTypea.GetField("SomeField", 
            BindingFlags.NonPublic|BindingFlags.Instance);
        Type MyTypeb = typeof(Myfieldb);
        FieldInfo Myfieldinfob = MyTypeb.GetField("SomeField");
  
        // Get and display the IsPublic and IsPrivate property values.
        Console.Write("\n{0}.", MyTypea.FullName);
        Console.Write("{0} - ", Myfieldinfoa.Name);
        Console.Write("{0}", Myfielda.Field);
        Console.Write("\n   IsPublic = {0}", Myfieldinfoa.IsPublic);
        Console.Write("\n   IsPrivate = {0}", Myfieldinfoa.IsPrivate);
  
        Console.Write("\n{0}.", MyTypeb.FullName);
        Console.Write("{0} - ", Myfieldinfob.Name);
        Console.Write("{0};", Myfieldb.SomeField);
        Console.Write("\n   IsPublic = {0}", Myfieldinfob.IsPublic);
        Console.Write("\n   IsPrivate = {0}", Myfieldinfob.IsPrivate);
  
        return 0;
    }
}
using namespace System;
using namespace System::Reflection;

// Make two fields.
// private
public ref class Myfielda
{
private:
   String^ SomeField;

public:
   Myfielda()
      : SomeField( "private field" )
   {}


   property String^ Field 
   {
      String^ get()
      {
         return SomeField;
      }

   }

};


// public
public ref class Myfieldb
{
public:
   String^ SomeField;
   Myfieldb()
      : SomeField( "public field" )
   {}


   property String^ Field 
   {
      String^ get()
      {
         return SomeField;
      }

   }

};

int main()
{
   Console::WriteLine( "\nReflection.FieldInfo" );
   Myfielda^ myfielda = gcnew Myfielda;
   Myfieldb^ myfieldb = gcnew Myfieldb;
   
   // Get the Type and FieldInfo.
   Type^ MyTypea = Type::GetType( "Myfielda" );
   FieldInfo^ Myfieldinfoa = MyTypea->GetField( "SomeField", static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance) );
   Type^ MyTypeb = Type::GetType( "Myfieldb" );
   FieldInfo^ Myfieldinfob = MyTypeb->GetField( "SomeField" );
   
   // Get and display the IsPublic and IsPrivate property values.
   Console::Write( "\n{0}.", MyTypea->FullName );
   Console::Write( "{0} - ", Myfieldinfoa->Name );
   Console::Write( "{0}", myfielda->Field );
   Console::Write( "\n   IsPublic = {0}", Myfieldinfoa->IsPublic );
   Console::Write( "\n   IsPrivate = {0}", Myfieldinfoa->IsPrivate );
   Console::Write( "\n{0}.", MyTypeb->FullName );
   Console::Write( "{0} - ", Myfieldinfob->Name );
   Console::Write( "{0};", myfieldb->Field );
   Console::Write( "\n   IsPublic = {0}", Myfieldinfob->IsPublic );
   Console::Write( "\n   IsPrivate = {0}", Myfieldinfob->IsPrivate );
   return 0;
}
import System.*;
import System.Reflection.*;

// Make two fields.
public class MyFielda
{
    // private
    private String someField = "private field";

    /** @property 
     */
    public String get_Field()
    {
        return someField;
    } //get_Field
} //MyFielda

public class MyFieldb
{
    // public
    public String someField = "public field";

    /** @property 
     */
    public String get_Field()
    {
        return someField;
    } //get_Field
} //MyFieldb

public class MyFieldInfo
{
    public static void main(String[] args)
    {
        Console.WriteLine("\nReflection.FieldInfo");
        MyFielda myFielda = new MyFielda();
        MyFieldb myFieldb = new MyFieldb();

        // Get the Type and FieldInfo.
        Type myTypea = Type.GetType("MyFielda");
        FieldInfo myFieldInfoa = myTypea.GetField("someField", 
            BindingFlags.NonPublic | BindingFlags.Instance);
        Type myTypeb = Type.GetType("MyFieldb");
        FieldInfo myFieldInfob = myTypeb.GetField("someField");

        // Get and display the IsPublic and IsPrivate property values.
        Console.Write("\n{0}.", myTypea.get_FullName());
        Console.Write("{0} - ", myFieldInfoa.get_Name());
        Console.Write("{0}", myFielda.get_Field());
        Console.Write("\n   IsPublic = {0}", 
            System.Convert.ToString(myFieldInfoa.get_IsPublic()));
        Console.Write("\n   IsPrivate = {0}", 
            System.Convert.ToString(myFieldInfoa.get_IsPrivate()));
        Console.Write("\n{0}.", myTypeb.get_FullName());
        Console.Write("{0} - ", myFieldInfob.get_Name());
        Console.Write("{0};", myFieldb.get_Field());
        Console.Write("\n   IsPublic = {0}", 
            System.Convert.ToString(myFieldInfob.get_IsPublic()));
        Console.Write("\n   IsPrivate = {0}", 
            System.Convert.ToString(myFieldInfob.get_IsPrivate()));
    } //main
} //MyFieldInfo
import System;
import System.Reflection;

// Make two fields.

// Make a private field.
public class Myfielda
{
    private var field : String = "private field";
    public function get Field() : String {
        return field;
    }
 }
// Make a public field.
 public class Myfieldb
 {
    public var field : String = "public field";
    public function get Field() : String {
        return field;
    }
 }
 
 public class Myfieldinfo
 {
    public static function Main(): void
    {
       Console.WriteLine("\nReflection.FieldInfo");
       var myfielda : Myfielda = new Myfielda();
       var myfieldb : Myfieldb = new Myfieldb();
  
       //Get the Type and FieldInfo.
       var MyTypea : Type = Type.GetType("Myfielda");
       var Myfieldinfoa : FieldInfo = MyTypea.GetField("field", BindingFlags.Instance|BindingFlags.NonPublic);
       var MyTypeb : Type = Type.GetType("Myfieldb");
       var Myfieldinfob : FieldInfo = MyTypeb.GetField("field");
  
       //Get and Display the IsPublic and IsPrivate.
       Console.Write("\n{0}.", MyTypea.FullName);
       Console.Write("{0} - ", Myfieldinfoa.Name);
       Console.Write("{0};", myfielda.Field);
       Console.Write("\n   IsPublic = {0}; ",Myfieldinfoa.IsPublic);
       Console.Write("\n   IsPrivate = {0}; ",Myfieldinfoa.IsPrivate);
  
       Console.Write("\n{0}.", MyTypeb.FullName);
       Console.Write("{0} - ", Myfieldinfob.Name);
       Console.Write("{0};", myfieldb.Field);
       Console.Write("\n   IsPublic = {0}; ", Myfieldinfob.IsPublic);
       Console.Write("\n   IsPrivate = {0}; ",Myfieldinfob.IsPrivate);
    }
 }
 Myfieldinfo.Main();

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

FieldInfo 类
FieldInfo 成员
System.Reflection 命名空间
FieldAttributes 枚举
BindingFlags 枚举