System.FieldAccessException Class

The exception that is thrown when there is an invalid attempt to access a private or protected field inside a class.

See Also: FieldAccessException Members

Syntax

[System.Runtime.InteropServices.ComVisible(true)]
public class FieldAccessException : MemberAccessException

Remarks

This exception is typically thrown when the access level of a field in a class library is changed, and one or more assemblies referencing the library have not been recompiled.

FieldAccessException uses the HRESULT COR_E_FIELDACCESS, which has the value 0x80131507.

For a list of initial property values for an instance of FieldAccessException, see the FieldAccessException.#ctor constructors.

Note:

This exception is not included in the tp://go.microsoft.com/fwlink/?LinkID=247912 or the Portable Class Library, but it is thrown by some members that are. To catch the exception in that case, write a catch statement for MemberAccessException instead.

Thread Safety

All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.

Example

The following example demonstrates a scenario under which FieldAccessException is thrown.

The following code contains a class with a public field (myField). This class is compiled into a class library.

C# Example

using System;
namespace TestNameSpace 
{
 public class Class1
 {
   public Class1()
   { 
     Console.WriteLine ("Constructing with public field");
   }
   public int myField = -1;
 }
}
   

The following code references the class library above, and accesses TestNameSpace.Class1.myField. This code is compiled into an application.

C# Example

using System;
using TestNameSpace;
class AppTest
{
  public static void Main()
  {
    Class1 test = new Class1();
    Console.WriteLine("Accessing member {0}.", test.myField);
  }
}
   

The output of the application is

Constructing with public field
Accessing member -1.

The code for the class library is changed and recompiled so that TestNameSpace.Class1.myField is no longer public. The following code changes myField from public to private.

C# Example

using System;
namespace TestNameSpace 
{
 public class Class1
 {
   public Class1()
   {
     Console.WriteLine ("Constructing with private field");
   }
   private int myField = -1;
 }
}
   

When the application is executed again without being recompiled, the output is

Unhandled Exception: System.FieldAccessException: TestNameSpace.Class1.myField
at AppTest.Main()

Requirements

Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0