In .NET, are private methods and properties enforced by the runtime or just by the compiler?
If you try to call another object's private methods, the compiler will throw an access exception. What if you manually manipulate the IL or try to call via reflection -- will you be able to? Also, does it vary by runtime version (1.1 vs. 2.0 vs. 3.5 vs. 4.0)?