次の方法で共有


FieldInfo.IsAssembly プロパティ

このフィールドに、アセンブリ レベルの参照可能範囲が設定されているかどうかを示す値を取得します。

Public ReadOnly Property IsAssembly As Boolean
[C#]
public bool IsAssembly {get;}
[C++]
public: __property bool get_IsAssembly();
[JScript]
public function get IsAssembly() : Boolean;

プロパティ値

フィールドに Assembly 属性が設定されている場合は true 。それ以外の場合は false

解説

フィールドに 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 public 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 = Type.GetType("Myfielda")
        Dim Myfieldinfoa As FieldInfo = MyTypea.GetField("field", BindingFlags.NonPublic Or BindingFlags.Instance)
        Dim MyTypeb As Type = 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

[C#] 
//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 public 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 = 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.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;
   }
}

[C++] 
//Make two fields.
public __gc class Myfielda
{
private:
    String* field;
public:
    Myfielda() : field(S"A private field") {}
    __property String* get_Field() {
        return field;
    }
    __property void set_Field(String* value) {
        if(field!=value){
            field=value;
        }
    }
};

public __gc class Myfieldb
{
public private:
    String* field;
public:
    Myfieldb() : field(S"B public field") {}
    __property String* get_Field() {
        return field;
    }
    __property void set_Field(String* value) {
        if(field!=value){
            field=value;
        }
    }
};

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"field",
        static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));
    Type* MyTypeb = Type::GetType(S"Myfieldb");
    FieldInfo* Myfieldinfob = MyTypeb->GetField(S"field",
        static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));

    //For the first field, get and display the name, field, and IsAssembly.
    Console::Write(S"\n{0} - ", MyTypea->FullName);
    Console::Write(S"{0};", Myfieldinfoa->GetValue(myfielda));
    Console::Write(S" IsAssembly = {0}; ", __box(Myfieldinfoa->IsAssembly));
    if (Myfieldinfoa->IsAssembly)
        Console::Write(S"Field has limited accessibility");

    //For the second field, get and display the name, field, and IsAssembly.

    Console::Write(S"\n{0} - ", MyTypeb->FullName);
    Console::Write(S"{0}; ", Myfieldinfob->GetValue(myfieldb));
    Console::Write(S" IsAssembly = {0}; ", __box(Myfieldinfob->IsAssembly));
    if (Myfieldinfob->IsAssembly)
        Console::Write(S"Field has limited accessibility");

    return 0;
}

[JScript] 
//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 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