FieldAttributes 列挙型
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
フィールドの属性を記述するフラグを指定します。
この列挙体は、メンバー値のビットごとの組み合わせをサポートしています。
public enum class FieldAttributes
[System.Flags]
public enum FieldAttributes
[System.Flags]
[System.Serializable]
public enum FieldAttributes
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum FieldAttributes
[<System.Flags>]
type FieldAttributes =
[<System.Flags>]
[<System.Serializable>]
type FieldAttributes =
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FieldAttributes =
Public Enum FieldAttributes
- 継承
- 属性
フィールド
Assembly | 3 | アセンブリ全体からフィールドにアクセスできることを指定します。 |
FamANDAssem | 2 | このアセンブリのサブタイプだけがフィールドにアクセスできることを指定します。 |
Family | 4 | 型およびサブタイプだけがフィールドにアクセスできることを指定します。 |
FamORAssem | 5 | あらゆる場所にあるサブタイプ、およびアセンブリ全体からフィールドにアクセスできることを指定します。 |
FieldAccessMask | 7 | 指定されているフィールドのアクセス レベルを指定します。 |
HasDefault | 32768 | フィールドが既定値を持つことを指定します。 |
HasFieldMarshal | 4096 | フィールドがマーシャリング情報を持つことを指定します。 |
HasFieldRVA | 256 | フィールドが RVA (Relative Virtual Address) を持つことを指定します。 RVA は、現在のイメージ内のメソッド本体の場所を、メソッドが存在するイメージ ファイルの先頭からの相対アドレスで表した値です。 |
InitOnly | 32 | フィールドについて、初期化のみを行い、コンストラクターの本体でしか設定できないように指定します。 |
Literal | 64 | フィールドの値がコンパイル時 (静的バインディングまたは事前バインディング) 定数であることを指定します。 設定しようとすると、FieldAccessException がスローされます。 |
NotSerialized | 128 | 型をリモート処理するときに、フィールドをシリアル化する必要がないことを指定します。 |
PinvokeImpl | 8192 | 将来使用するために予約されています。 |
Private | 1 | 親の型だけがフィールドにアクセスできることを指定します。 |
PrivateScope | 0 | フィールドを参照できないことを指定します。 |
Public | 6 | このスコープが可視である任意のメンバーがフィールドにアクセスできることを指定します。 |
ReservedMask | 38144 | 予約済み。 |
RTSpecialName | 1024 | 共通言語ランタイム (メタデータ内部 API) が名前のエンコードをチェックする必要があることを指定します。 |
SpecialName | 512 | 特別なメソッドを指定します。メソッドが特別である理由は名前で説明します。 |
Static | 16 | フィールドが定義済みの型を表すことを指定します。それ以外の場合は、フィールドが表す型はインスタンスごとに異なります。 |
例
この例では、3 つのフィールドが作成され、 FieldAttributes
値が表示されます。 値にはFieldAttributes
、3 番目のフィールドに示すように、 と Literal
の両方Public
など、複数の属性を含めることができます。
using namespace System;
using namespace System::Reflection;
using namespace System::Security::Permissions;
public ref class Demo
{
private:
// Make three fields:
// The first field is private.
String^ m_field;
// The second field is public.
public:
String^ Field;
// The third field is public and literal.
literal String^ FieldC = "String C";
Demo() { m_field = "String A"; Field = "String B"; }
};
static void DisplayField(Object^ obj, FieldInfo^ f)
{
// Display the field name, value, and attributes.
//
Console::WriteLine("{0} = \"{1}\"; attributes: {2}",
f->Name, f->GetValue(obj), f->Attributes);
};
void main()
{
Console::WriteLine ("\nReflection.FieldAttributes");
Demo^ d = gcnew Demo();
// Get a Type object for Demo, and a FieldInfo for each of
// the three fields. Use the FieldInfo to display field
// name, value for the Demo object in d, and attributes.
//
Type^ myType = Demo::typeid;
FieldInfo^ fiPrivate = myType->GetField("m_field",
BindingFlags::NonPublic | BindingFlags::Instance);
DisplayField(d, fiPrivate);
FieldInfo^ fiPublic = myType->GetField("Field",
BindingFlags::Public | BindingFlags::Instance);
DisplayField(d, fiPublic);
FieldInfo^ fiConstant = myType->GetField("FieldC",
BindingFlags::Public | BindingFlags::Static);
DisplayField(d, fiConstant);
}
/* This code example produces the following output:
Reflection.FieldAttributes
m_field = "String A"; attributes: Private
Field = "String B"; attributes: Public
FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
*/
using System;
using System.Reflection;
public class Demo
{
// Make three fields:
// The first field is private.
private string m_field = "String A";
// The second field is public.
public string Field = "String B";
// The third field is public const (hence also literal and static),
// with a default value.
public const string FieldC = "String C";
}
public class Myfieldattributes
{
public static void Main()
{
Console.WriteLine ("\nReflection.FieldAttributes");
Demo d = new Demo();
// Get a Type object for Demo, and a FieldInfo for each of
// the three fields. Use the FieldInfo to display field
// name, value for the Demo object in d, and attributes.
//
Type myType = typeof(Demo);
FieldInfo fiPrivate = myType.GetField("m_field",
BindingFlags.NonPublic | BindingFlags.Instance);
DisplayField(d, fiPrivate);
FieldInfo fiPublic = myType.GetField("Field",
BindingFlags.Public | BindingFlags.Instance);
DisplayField(d, fiPublic);
FieldInfo fiConstant = myType.GetField("FieldC",
BindingFlags.Public | BindingFlags.Static);
DisplayField(d, fiConstant);
}
static void DisplayField(Object obj, FieldInfo f)
{
// Display the field name, value, and attributes.
//
Console.WriteLine("{0} = \"{1}\"; attributes: {2}",
f.Name, f.GetValue(obj), f.Attributes);
}
}
/* This code example produces the following output:
Reflection.FieldAttributes
m_field = "String A"; attributes: Private
Field = "String B"; attributes: Public
FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
*/
Imports System.Reflection
Public Class Demo
' Declare three fields.
' The first field is private.
Private m_field As String = "String A"
'The second field is public.
Public Field As String = "String B"
' The third field is public and const, hence also static
' and literal with a default value.
Public Const FieldC As String = "String C"
End Class
Module Module1
Sub Main()
' Create an instance of the Demo class.
Dim d As New Demo()
Console.WriteLine(vbCrLf & "Reflection.FieldAttributes")
' Get a Type object for Demo, and a FieldInfo for each of
' the three fields. Use the FieldInfo to display field
' name, value for the Demo object in d, and attributes.
'
Dim myType As Type = GetType(Demo)
Dim fiPrivate As FieldInfo = myType.GetField("m_field", _
BindingFlags.NonPublic Or BindingFlags.Instance)
DisplayField(d, fiPrivate)
Dim fiPublic As FieldInfo = myType.GetField("Field", _
BindingFlags.Public Or BindingFlags.Instance)
DisplayField(d, fiPublic)
Dim fiConstant As FieldInfo = myType.GetField("FieldC", _
BindingFlags.Public Or BindingFlags.Static)
DisplayField(d, fiConstant)
End Sub
Sub DisplayField(ByVal obj As Object, ByVal f As FieldInfo)
' Display the field name, value, and attributes.
'
Console.WriteLine("{0} = ""{1}""; attributes: {2}", _
f.Name, f.GetValue(obj), f.Attributes)
End Sub
End Module
' This code example produces the following output:
'
'm_field = "String A"; attributes: Private
'Field = "String B"; attributes: Public
'FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
注釈
FieldAttributes
では、 の FieldAccessMask
値を使用して、アクセシビリティに関連する属性値の部分のみをマスクします。 たとえば、次のコードでは、パブリック ビットが設定されているかどうかを Attributes
判断します。
FieldInfo^ fi = obj->GetType()->GetField("field1");
if ((fi->Attributes & FieldAttributes::FieldAccessMask) ==
FieldAttributes::Public)
{
Console::WriteLine("{0:s} is public. Value: {1:d}", fi->Name, fi->GetValue(obj));
}
FieldInfo fi = obj.GetType().GetField("field1");
if ((fi.Attributes & FieldAttributes.FieldAccessMask) ==
FieldAttributes.Public)
{
Console.WriteLine("{0:s} is public. Value: {1:d}", fi.Name, fi.GetValue(obj));
}
Dim fi As FieldInfo = obj.GetType().GetField("field1")
If (fi.Attributes And FieldAttributes.FieldAccessMask) = _
FieldAttributes.Public Then
Console.WriteLine("{0:s} is public. Value: {1:d}", fi.Name, fi.GetValue(obj))
End If
を取得するには、 FieldAttributes
まず クラス Type
を取得します。 から、 Type
を取得します FieldInfo
。 から、 FieldInfo
を取得します Attributes
。
列挙値は、フィールドに実装されている属性のビットごとの OR を表す数値です。
適用対象
.NET