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
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.
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.
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 fieldThe 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