Lý do mọi người cảnh giác khi sử dụng sự phản chiếu một cách không cần thiết không phải là hiệu suất: vâng, có một số chi phí để sử dụng sự phản chiếu, nhưng thông thường, để giải quyết vấn đề mà không cần đến một cách tiếp cận khác với độ phức tạp tương đương, và ngay cả khi nó không, thì chi phí là hiếm khi có ý nghĩa (đặc biệt đối với phát triển cấp ứng dụng).
Sử dụng sự phản chiếu, một số giả định quan trọng mà người ta thường có thể làm cho mã nguồn bị hỏng và các công cụ như "Tìm tất cả tài liệu tham khảo" ngừng hoạt động một cách đáng tin cậy. Reflection về cơ bản cũng loại bỏ hầu hết các loại an toàn mà trình biên dịch thực thi, giả sử, C # và hầu hết các lỗi lập trình mà một hệ thống loại thường mắc phải và chuyển thành lỗi trình biên dịch, giờ trở thành lỗi thời gian chạy ở mức tốt nhất hoặc rất khó hiểu.
Vậy tại sao người ta lại dùng phản xạ? Nói một cách đơn giản, bởi vì mặc dù các vấn đề được mô tả ở trên, nó là một công cụ rất có giá trị. Với sự phản ánh, một số lợi ích của lập trình động có thể có trong một ngôn ngữ tĩnh, được gõ đúng như C # và các ngôn ngữ lập trình động đã thể hiện giá trị của chúng gần đây, đặc biệt là trong lĩnh vực lập trình web - PHP, Javascript và Python khá nổi bật , tất cả đều sử dụng kiểu gõ động và đã được chứng minh là phù hợp với lập trình web. Nhưng vì ngôn ngữ vẫn là C #, bạn có thể chọn giữ phần lớn ứng dụng của mình trong thành ngữ OOP được gõ chính xác và viết phần nhỏ trong đó hành vi động thực sự tạo ra sự khác biệt với sự phản chiếu.
Một ví dụ điển hình là khi bạn cần trưng ra các phương thức như các cuộc gọi dịch vụ web (sử dụng giao thức chưa được tích hợp vào .NET). Cách tiếp cận OOP được gõ chặt chẽ có tác dụng, nhưng nó quá hạn chế và vụng về. Nhưng nếu bạn sử dụng sự phản chiếu để ánh xạ các cuộc gọi đến các phương thức và các cặp khóa / giá trị cho các đối số, bạn có thể viết hệ thống ống nước cho một dịch vụ web như vậy một lần và sau đó sử dụng nó trên bất kỳ lớp nào bạn muốn.