FieldInfo.IsAssembly プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)


フィールドに Assembly レベルの参照可能範囲が設定されている場合、そのフィールドはアセンブリ内のすべてのメンバから呼び出せますが、アセンブリ外部からは呼び出せません。
IsAssembly プロパティは、FieldAttributes.Assembly 属性が設定されたときに設定されます。C# では、フィールドを internal として宣言することで、このフィールドのアクセスをこのプロジェクトに制限するよう、このプロパティを設定できます。

指定したフィールドにアセンブリ レベルの参照可能範囲が指定されているかどうかを確認し、その結果を表示する例を次に示します。
Imports System Imports System.Reflection Imports Microsoft.VisualBasic ' Make two fields. Public Class Myfielda Private field As String = "A private field" Public Property MyField() As String Get Return MyField End Get Set(ByVal Value As String) If field <> Value Then field = Value End If End Set End Property End Class 'Myfielda Public Class Myfieldb Friend field As String = "B Friend field" Public Property MyField() As String Get Return MyField End Get Set(ByVal Value As String) If field <> Value Then field = Value End If End Set End Property End Class 'Myfieldb Public Class Myfieldinfo Public Shared Function Main() As Integer Console.WriteLine(ControlChars.Lf & "Reflection.FieldInfo") 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("field", _ BindingFlags.NonPublic Or BindingFlags.Instance) Dim MyTypeb As Type = GetType(Myfieldb) Dim Myfieldinfob As FieldInfo = MyTypeb.GetField("field", _ BindingFlags.NonPublic Or BindingFlags.Instance) 'For the first field, get and display the name, field, and IsAssembly. Console.Write(ControlChars.Lf & "{0} - ", MyTypea.FullName) Console.Write("{0};", Myfieldinfoa.GetValue(Myfielda)) Console.Write(" IsAssembly = {0}; ", Myfieldinfoa.IsAssembly) If Myfieldinfoa.IsAssembly Then Console.Write("Field has limited accessibility") End If 'For the second field, get and display the name, field, and IsAssembly. Console.Write(ControlChars.Lf & "{0} - ", MyTypeb.FullName) Console.Write("{0}; ", Myfieldinfob.GetValue(Myfieldb)) Console.Write(" IsAssembly = {0}; ", Myfieldinfob.IsAssembly) If Myfieldinfob.IsAssembly Then Console.Write("Field has limited accessibility") End If Return 0 End Function 'Main End Class 'Myfieldinfo
//Make two fields. public class Myfielda { private string field = "A private field"; public string Field{ get{return field;} set{if(field!=value){field=value;}} } } public class Myfieldb { internal string field = "B internal field"; public string Field{ get{return field;} set{if(field!=value){field=value;}} } } 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("field", BindingFlags.NonPublic|BindingFlags.Instance); Type MyTypeb = typeof(Myfieldb); FieldInfo Myfieldinfob = MyTypeb.GetField("field", BindingFlags.NonPublic|BindingFlags.Instance); //For the first field, get and display the name, field, and IsAssembly. Console.Write("\n{0} - ", MyTypea.FullName); Console.Write("{0};", Myfieldinfoa.GetValue(Myfielda)); Console.Write(" IsAssembly = {0}; ", Myfieldinfoa.IsAssembly ); if (Myfieldinfoa.IsAssembly) Console.Write("Field has limited accessibility"); //For the second field, get and display the name, field, and IsAssembly. Console.Write("\n{0} - ", MyTypeb.FullName); Console.Write("{0}; ", Myfieldinfob.GetValue(Myfieldb)); Console.Write(" IsAssembly = {0}; ", Myfieldinfob.IsAssembly ); if (Myfieldinfob.IsAssembly) Console.Write("Field has limited accessibility"); return 0; } }
//Make two fields. public ref class Myfielda { private: String^ field; public: Myfielda() : field( "A private field" ) {} property String^ Field { String^ get() { return field; } void set( String^ value ) { if ( field != value ) { field = value; } } } }; public ref class Myfieldb { public private: String^ field; public: Myfieldb() : field( "B public field" ) {} property String^ Field { String^ get() { return field; } void set( String^ value ) { if ( field != value ) { field = value; } } } }; 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( "field", static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance) ); Type^ MyTypeb = Type::GetType( "Myfieldb" ); FieldInfo^ Myfieldinfob = MyTypeb->GetField( "field", static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance) ); //For the first field, get and display the name, field, and IsAssembly. Console::Write( "\n{0} - ", MyTypea->FullName ); Console::Write( "{0};", Myfieldinfoa->GetValue( myfielda ) ); Console::Write( " IsAssembly = {0}; ", Myfieldinfoa->IsAssembly ); if ( Myfieldinfoa->IsAssembly ) Console::Write( "Field has limited accessibility" ); //For the second field, get and display the name, field, and IsAssembly. Console::Write( "\n{0} - ", MyTypeb->FullName ); Console::Write( "{0}; ", Myfieldinfob->GetValue( myfieldb ) ); Console::Write( " IsAssembly = {0}; ", Myfieldinfob->IsAssembly ); if ( Myfieldinfob->IsAssembly ) Console::Write( "Field has limited accessibility" ); return 0; }
//Make two fields. public class MyFieldA { private String field = "A private field"; /** @property */ public String get_Field() { return field; } //get_Field /** @property */ public void set_Field(String value) { if (field != value) { field = value; } } //set_Field } //MyFieldA public class MyFieldB { String field = "B public field"; /** @property */ public String get_Field() { return field; } //get_Field /** @property */ public void set_Field(String value) { if (field != value) { field = value; } } //set_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("field", BindingFlags.NonPublic | BindingFlags.Instance); Type myTypeB = Type.GetType("MyFieldB"); FieldInfo myFieldInfoB = myTypeB.GetField("field", BindingFlags.NonPublic | BindingFlags.Instance); //For the first field, get and display the name, field, and IsAssembly. Console.Write("\n{0} - ", myTypeA.get_FullName()); Console.Write("{0};", myFieldInfoA.GetValue(myFieldA)); Console.Write(" IsAssembly = {0}; ", (System.Boolean)myFieldInfoA.get_IsAssembly()); if (myFieldInfoA.get_IsAssembly()) { Console.Write("Field has limited accessibility"); } //For the second field, get and display the name, field, and IsAssembly. Console.Write("\n{0} - ", myTypeB.get_FullName()); Console.Write("{0}; ", myFieldInfoB.GetValue(myFieldB)); Console.Write(" IsAssembly = {0}; ", (System.Boolean)myFieldInfoB.get_IsAssembly()); if (myFieldInfoB.get_IsAssembly()) { Console.Write("Field has limited accessibility"); } return; } //main } //MyFieldInfo
//Make two fields. public class Myfielda { private var field : String = "A private field"; public function get Field() : String { return field; } public function set Field(value : String) { if (field!=value) field=value; } } public class Myfieldb { internal var field : String = "B public field"; public function get Field() : String { return field; } public function set Field(value : String) { if (field!=value) field=value; } } 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", BindingFlags.Instance|BindingFlags.NonPublic); //For the first field, get and display the name, field, and IsAssembly. Console.Write("\n{0} - ", MyTypea.FullName); Console.Write("{0};", Myfieldinfoa.GetValue(myfielda)); Console.Write(" IsAssembly = {0}; ", Myfieldinfoa.IsAssembly ); if (Myfieldinfoa.IsAssembly) Console.Write("Field has limited accessibility"); //For the second field, get and display the name, field, and IsAssembly. Console.Write("\n{0} - ", MyTypeb.FullName); Console.Write("{0}; ", Myfieldinfob.GetValue(myfieldb)); Console.Write(" IsAssembly = {0}; ", Myfieldinfob.IsAssembly ); if (Myfieldinfob.IsAssembly) Console.Write("Field has limited accessibility"); } } 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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


_FieldInfo.IsAssembly プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)


このプロパティは、アンマネージ コードからマネージ クラスにアクセスするためのプロパティであるため、マネージ コードからは呼び出さないでください。
IsAssembly プロパティは、このフィールドに Assembly レベルの参照範囲が設定されているかどうかを示す値を取得します。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- _FieldInfo.IsAssemblyのページへのリンク