Type.GetField メソッド (String)
指定した名前のフィールドを検索します。
Overloads Public Function GetField( _
ByVal name As String _) As FieldInfo
[C#]
public FieldInfo GetField(stringname);
[C++]
public: FieldInfo* GetField(String* name);
[JScript]
public function GetField(
name : String) : FieldInfo;
パラメータ
- name
取得するデータ フィールドの名前を格納している String 。
戻り値
指定した名前のフィールドが存在する場合は、そのフィールドを表す FieldInfo オブジェクト。それ以外の場合は null 参照 (Visual Basic では Nothing) 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | name が null 参照 (Visual Basic では Nothing) です。 |
解説
name の検索では大文字と小文字が区別されます。
要求された型がパブリックではなく、呼び出し元に現在のアセンブリ外の非パブリック オブジェクトをリフレクションするための ReflectionPermission がない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。
使用例
[Visual Basic, C#, C++] 指定したクラスの Type オブジェクトを取得し、フィールドの FieldInfo オブジェクトを取得して、そのフィールドの値を表示する例を次に示します。
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic
Public Class MyFieldClassA
Public myField As String = "A Field"
Public Property Field() As String
Get
Return myField
End Get
Set(ByVal Value As String)
If myField <> value Then
myField = value
End If
End Set
End Property
End Class 'MyFieldClassA
Public Class MyFieldClassB
Public myField As String = "B Field"
Public Property Field() As String
Get
Return myField
End Get
Set(ByVal Value As String)
If myField <> value Then
myField = value
End If
End Set
End Property
End Class 'MyFieldClassB
Public Class MyFieldInfoClass
Public Shared Sub Main()
Try
Dim myFieldObjectB As New MyFieldClassB()
Dim myFieldObjectA As New MyFieldClassA()
Dim myTypeA As Type = Type.GetType("MyFieldClassA")
Dim myFieldInfo As FieldInfo = myTypeA.GetField("myField")
Dim myTypeB As Type = Type.GetType("MyFieldClassB")
Dim myFieldInfo1 As FieldInfo = myTypeB.GetField("myField", BindingFlags.Public Or BindingFlags.Instance)
Console.WriteLine("The value of the field is : {0} ", myFieldInfo.GetValue(myFieldObjectA))
Console.WriteLine("The value of the field is : {0} ", myFieldInfo1.GetValue(myFieldObjectB))
Catch e As SecurityException
Console.WriteLine("An exception has occurred: ")
Console.WriteLine(("Message :" + e.Message))
Catch e As ArgumentNullException
Console.WriteLine("An exception has occurred: ")
Console.WriteLine(("Message :" + e.Message))
Catch e As Exception
Console.WriteLine("An exception has occurred: ")
Console.WriteLine(("Message :" + e.Message))
End Try
End Sub 'Main
End Class 'MyFieldInfoClass
[C#]
using System;
using System.Reflection;
using System.Security;
public class MyFieldClassA
{
public string field = "A Field";
public string Field
{
get
{
return field;
}
set
{
if(field!=value)
{
field=value;
}
}
}
}
public class MyFieldClassB
{
public string field = "B Field";
public string Field
{
get
{
return field;
}
set
{
if(field!=value)
{
field=value;
}
}
}
}
public class MyFieldInfoClass
{
public static void Main()
{
try
{
MyFieldClassB myFieldObjectB = new MyFieldClassB();
MyFieldClassA myFieldObjectA = new MyFieldClassA();
Type myTypeA = Type.GetType("MyFieldClassA");
FieldInfo myFieldInfo = myTypeA.GetField("field");
Type myTypeB = Type.GetType("MyFieldClassB");
FieldInfo myFieldInfo1 = myTypeB.GetField("field", BindingFlags.Public | BindingFlags.Instance);
Console.WriteLine("The value of the field is : {0} ", myFieldInfo.GetValue(myFieldObjectA));
Console.WriteLine("The value of the field is : {0} ", myFieldInfo1.GetValue(myFieldObjectB));
}
catch(SecurityException e)
{
Console.WriteLine("Exception Raised!");
Console.WriteLine("Message :"+e.Message);
}
catch(ArgumentNullException e)
{
Console.WriteLine("Exception Raised!");
Console.WriteLine("Message :"+e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception Raised!");
Console.WriteLine("Message :"+e.Message);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public __gc class MyFieldClassA {
public:
String* field;
MyFieldClassA(){
field = S"A Field";
}
__property String* get_Field() {
return field;
}
__property void set_Field(String* value) {
if (field!=value) {
field=value;
}
}
};
public __gc class MyFieldClassB {
public:
String* field;
MyFieldClassB() {
field = S"B Field";
}
__property String* get_Field() {
return field;
}
__property void set_Field(String* value) {
if (field!=value) {
field=value;
}
}
};
int main() {
try {
MyFieldClassB* myFieldObjectB = new MyFieldClassB();
MyFieldClassA* myFieldObjectA = new MyFieldClassA();
Type* myTypeA = Type::GetType(S"MyFieldClassA");
FieldInfo* myFieldInfo = myTypeA->GetField(S"field");
Type* myTypeB = Type::GetType(S"MyFieldClassB");
FieldInfo* myFieldInfo1 = myTypeB->GetField(S"field", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance));
Console::WriteLine(S"The value of the field is : {0} ", myFieldInfo->GetValue(myFieldObjectA));
Console::WriteLine(S"The value of the field is : {0} ", myFieldInfo1->GetValue(myFieldObjectB));
} catch (SecurityException* e) {
Console::WriteLine(S"Exception Raised!");
Console::WriteLine(S"Message : {0}", e->Message);
} catch (ArgumentNullException* e) {
Console::WriteLine(S"Exception Raised!");
Console::WriteLine(S"Message : {0}", e->Message);
} catch (Exception* e) {
Console::WriteLine(S"Exception Raised!");
Console::WriteLine(S"Message : {0}", e->Message);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: 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, Common Language Infrastructure (CLI) Standard
.NET Framework セキュリティ:
- ReflectionPermission (非パブリック オブジェクトをリフレクション操作するために必要なアクセス許可) ReflectionPermissionFlag.TypeInformation (関連する列挙体)
参照
Type クラス | Type メンバ | System 名前空間 | Type.GetField オーバーロードの一覧 | FieldInfo | String | DefaultBinder | ReflectionPermission | GetFields