My code invokes method using reflection:
scoringType.InvokeMember("scoringClient_ScorePostsCompleted",
BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,
null, scoringInstance,
new object[] { sArg, eArg });
where scoringInstance is an instance of a ModelView class. The method is private, but I use BindingFlags.NonPublic, so, i should be able to access it, but I cannot - I get MethodAccessException exception: "Attempt by method ... to access method ... failed." Google doesnt seem to have an answer. Do you have any idea how to fix it by any chance?
So, just focus on typeof, getMethod and Invoke functions etc. Using reflection in C# language, we can access the private fields, data and functions etc.
Private: The class members declared as private can be accessed only by the functions inside the class. They are not allowed to be accessed directly by any object or function outside the class.
From MSDN on silverlight
In Silverlight, you cannot use reflection to access private types and members. If the access level of a type or member would prevent you from accessing it in statically compiled code, you cannot access it dynamically by using reflection.
Edit:
Silverlight 5 now does allow for reflection of private members ONLY if you're running with elevated privileges either out-of-browser or in-browser (in-browser using the generated test page DOES NOT WORK).
If you need access to non-public members, you can do this using the LambdaExpression. I wrote this article that explains in detail why it works.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With