Vandaag las ik dit artikel op MSDN.
Hieruit blijkt dus dat je mbhv reflection private fields/methods van een class kunt invoken:
In het bovenstaande artikel staat ook hoe je je code veiliger kunt maken (hoe je er voor kunt zorgen dat bovenstaande niet zomaar meer mogelijk is).
Een must read voor iedere .NET developer.
Hieruit blijkt dus dat je mbhv reflection private fields/methods van een class kunt invoken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| MyClass o = new MyClass();
Type t = o.GetType();
FieldInfo[] fi = t.GetFields (BindingFlags.NonPublic | BindingFlags.Instance);
// fi bevat nu alle fields die niet public zijn.
MethodInfo[] mi = t.GetMethods (BindingFlags.NonPublic | BindingFlags.Instance);
// mi bevat alle non public methods
// private method invoken:
MethodInfo m = t.GetMethod ("aMethodName", BindingFlags.NonPublic | BindingFlags.Instance);
m.Invoke ( o, .... );
// hetzelfde geldt voor een private field een value te geven.
FieldInfo f = t.GetField ("afield", BindingFlags.NonPublic | BindingFlags.Instance);
f.SetValue ( .... ); |
In het bovenstaande artikel staat ook hoe je je code veiliger kunt maken (hoe je er voor kunt zorgen dat bovenstaande niet zomaar meer mogelijk is).
Een must read voor iedere .NET developer.
https://fgheysels.github.io/