MethodAccessException with Reflection on Windows P

2019-09-06 07:55发布

问题:

While working with reflection, I recently got to the point where I wanted to access an object (in fact, a static instance of an object).

The object itself is defined by an internal class, therefore there is no other way to access it. Instead of directly getting a parametrized constructor, I can access a static instance via the Instance property. With the help of reflection, I am also able to get this property and set it to a PropertyInfo instance - it is detected correctly.

However, I am not able to get the value of the property via GetValue (since it is called via get_Instance() in the internal class itself) and set it to an object because I am getting a MethodAccessException.

The internal class is marked with the SecuritySafeCritical, but I do believe that shouldn't be the problem.

Any ideas on why am I getting this exception?

回答1:

Have a look at MethodAccessException.

It says

This exception is thrown in situations such as the following:

*      A private, protected, or internal method that would not be accessible from normal compiled code is accessed from partially trusted code by using reflection.
*      A security-critical method is accessed from transparent code.
*      The access level of a method in a class library has changed, and one or more assemblies that reference the library have not been recompiled.

Check if the assembly is properly compiled and your application has proper privileges.