フィールドがパブリックかどうかを示す値を取得します。
Public ReadOnly Property IsPublic As Boolean
[C#]
public bool IsPublic {get;}
[C++]
public: __property bool get_IsPublic();
[JScript]
public function get IsPublic() : Boolean;
プロパティ値
フィールドがパブリックの場合は true 。それ以外の場合は false 。
解説
パブリック フィールドには、対応するクラスが可視ならばどこからでもアクセスできます。
IsPublic プロパティは、 FieldAttributes.Public 属性が設定されたときに設定されます。
IsPublic プロパティを取得するには、最初に Type クラスを取得します。そして、その Type から FieldInfo を取得します。最後に、 FieldInfo から IsPublic プロパティを取得します。フィールドがパブリック以外の場合は、そのフィールドは保護されているため、簡単にはアクセスできません。非パブリック フィールドにアクセスするには、 BindingFlags を NonPublic に設定し、 BindingFlags.Instance または BindingFlags.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"
Public ReadOnly Property Field() As String
Get
Return SomeField
End Get
End Property
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 = Type.GetType("Myfielda")
Dim Myfieldinfoa As FieldInfo = MyTypea.GetField("SomeField", BindingFlags.NonPublic Or BindingFlags.Instance)
Dim MyTypeb As Type = 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.Field)
Console.WriteLine(" IsPublic = {0}", Myfieldinfob.IsPublic)
Console.WriteLine(" IsPrivate = {0}", Myfieldinfob.IsPrivate)
Return 0
End Function 'Main
End Class 'Myfieldinfo
[C#]
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 string Field
{
get{return SomeField;}
}
}
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 = 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.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;
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
// Make two fields.
public __gc class Myfielda // private
{
private:
String* SomeField;
public:
Myfielda() : SomeField(S"private field") {}
__property String* get_Field() {
return SomeField;
}
};
public __gc class Myfieldb // public
{
public:
String* SomeField;
Myfieldb() : SomeField(S"public field") {}
__property String* get_Field() {
return SomeField;
}
};
int main()
{
Console::WriteLine(S"\nReflection.FieldInfo");
Myfielda* myfielda = new Myfielda();
Myfieldb* myfieldb = new Myfieldb();
// Get the Type and FieldInfo.
Type* MyTypea = Type::GetType(S"Myfielda");
FieldInfo* Myfieldinfoa = MyTypea->GetField(S"SomeField",
static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));
Type* MyTypeb = Type::GetType(S"Myfieldb");
FieldInfo* Myfieldinfob = MyTypeb->GetField(S"SomeField");
// Get and display the IsPublic and IsPrivate property values.
Console::Write(S"\n{0}.", MyTypea->FullName);
Console::Write(S"{0} - ", Myfieldinfoa->Name);
Console::Write(S"{0}", myfielda->Field);
Console::Write(S"\n IsPublic = {0}", __box(Myfieldinfoa->IsPublic));
Console::Write(S"\n IsPrivate = {0}", __box(Myfieldinfoa->IsPrivate));
Console::Write(S"\n{0}.", MyTypeb->FullName);
Console::Write(S"{0} - ", Myfieldinfob->Name);
Console::Write(S"{0};", myfieldb->Field);
Console::Write(S"\n IsPublic = {0}", __box(Myfieldinfob->IsPublic));
Console::Write(S"\n IsPrivate = {0}", __box(Myfieldinfob->IsPrivate));
return 0;
}
[JScript]
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 NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
FieldInfo クラス | FieldInfo メンバ | System.Reflection 名前空間 | FieldAttributes | BindingFlags