I see a lot of C#, .net questions solved here using reflection. To me, a lot of them look like bending the rules at the cost of good design (OOP). Many of the solutions look unmaintenable and "scripty".
Is using reflection a good practice in general? Are there things that can only be solved by reflection?
edit:
Please give examples where reflection is the only good solution.