2010-06-23 22 views
26

Tôi đã đọc một bài báo tại msdn về reflection nhưng tôi đã không thể hiểu nó thậm chí 10% về lợi ích của nó, sử dụng của nó.phản ánh trong C#, lợi ích là gì. Làm thế nào để sử dụng nó để có được benifit

Bạn có thể vui lòng cung cấp một số tổng quan ngắn gọn về phản ánh và cách tôi có thể hưởng lợi từ nó.

+0

Các bản sao có thể có: http://stackoverflow.com/questions/1897712 ... http://stackoverflow.com/questions/1859902 –

+0

có thể trùng lặp với [Phản ánh. Những gì chúng ta có thể đạt được bằng cách sử dụng nó?] (Http://stackoverflow.com/questions/1897712/reflection-what-can-we-achieve-using-it) –

+0

Để tất cả: Tôi vẫn không thể có được, làm thế nào tôi m được benifited. Bất cứ ai trong các bạn có thể trích dẫn một ví dụ đơn giản nhất về lợi ích của nó trong việc viết mã giúp làm cho mã trở nên tái sử dụng hơn và về chức năng –

Trả lời

5

Phản ánh là khả năng của các loại để cung cấp thông tin về bản thân. Ví dụ, một hội đồng có thể cho bạn biết những gì nó có chứa, một loại có thể cho bạn biết phương pháp của nó, tài sản và như vậy.

Tự động cung cấp thông tin này hữu ích theo nhiều cách. Một ví dụ đơn giản để suy nghĩ về là siêu dữ liệu được sử dụng bởi các dịch vụ web - khi một người "tiêu thụ" một dịch vụ web, một lớp proxy được tạo cho khách hàng của họ. Proxy này được tạo ra từ một tài liệu WSDL và thường được tạo ra từ siêu dữ liệu kiểu được tạo ra thông qua sự phản chiếu.

Một ví dụ đơn giản khác là tải động các loại để thực hiện một số đơn vị công việc. Một dự án tôi đã làm việc trên phản chiếu được sử dụng để tải "quy tắc" từ cơ sở dữ liệu để áp dụng cho các yếu tố đầu vào trong hệ thống.

7

Phản ánh cho phép các phương thức và thuộc tính gọi mã mà bạn không biết khi nào mã được biên dịch. Một trong các lớp được xây dựng có sử dụng đây là XmlSerializer. Bạn có thể chuyển cho nó bất kỳ đối tượng nào bạn muốn chuyển đổi sang XML. Nó yêu cầu đối tượng tất cả các thuộc tính của nó đang sử dụng sự phản chiếu thì có thể tạo một tài liệu XML chứa các phần tử cần thiết để biểu diễn đối tượng.

37

Phản ánh cho phép bạn viết mã có thể kiểm tra các khía cạnh khác nhau về chính mã đó.

Nó cho phép bạn làm những việc đơn giản như:

  1. Kiểm tra kiểu của một đối tượng trong thời gian chạy (cuộc gọi đơn giản để typeof() ví dụ)

  2. Kiểm tra thuộc tính của một đối tượng trong thời gian chạy để thay đổi hành vi của một phương thức (các phương thức tuần tự khác nhau trong .NET)

Để thực hiện các tác vụ phức tạp hơn như:

  1. Tải hội đồng vào thời gian chạy, tìm một lớp cụ thể, xác định xem nó có khớp với một Giao diện cụ thể hay không và gọi một số thành viên nhất định.

Sử dụng phổ biến hơn trước đây. Sau này là hữu ích cho các nhà phát triển làm việc trên các kiến ​​trúc plug-in cho các ứng dụng của họ hoặc những người muốn trao đổi các assembly trong thời gian chạy phụ thuộc vào các thay đổi cấu hình.

12

Phản ánh là cách để bạn có thể khám phá các loại khi chạy theo chương trình. Điều này rất quan trọng vì các ngôn ngữ .NET được đánh máy mạnh. Việc có thể truy cập siêu dữ liệu đó cực kỳ hữu ích.

Một điều lớn ngay bây giờ (giao diện thông thạo/bộ điều hợp) dựa nhiều vào phản ánh. Đặc biệt, phản xạ tĩnh là khá lớn.Nếu bạn muốn xem các ví dụ cụ thể và giải thích tốt về suy tĩnh, hãy kiểm tra:

http://jagregory.com/writings/introduction-to-static-reflection/
http://www.lostechies.com/blogs/gabrielschenker/archive/2009/02/03/dynamic-reflection-versus-static-reflection.aspx

Tất nhiên, đây là một tập hợp con nhỏ phản xạ nói chung. Nếu bạn muốn biết thêm thông tin về việc sử dụng phản chiếu chung, hãy xem Apress Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition, Chương 16. Nó sẽ nghiên cứu sâu về hệ thống kiểu .NET và cách được sử dụng trong các thư viện và thời gian chạy.

1

Phản ánh giúp bạn thực hiện lập trình meta, đây là một trong những kỹ thuật lập trình tuyệt vời nhất. Google cho lập trình meta để biết thêm thông tin.

0

Một trong những lợi ích của việc phản ánh là nó cho phép bạn lưu tất cả những thay đổi trong thiết kế bộ dữ liệu như một giao dịch trong SQL

0

Reflection là namespace mạnh mẽ có sẵn trong asp.net. bằng cách sử dụng nó, chúng ta có thể tạo thời gian chạy đối tượng động và gọi it.it chủ yếu được sử dụng trong việc phát triển ứng dụng kiểu khung công tác.

+2

Phản ánh không phải là một phần của ASP.NET hay bất kỳ công nghệ .NET nào khác. một hội đồng tại thời gian chạy, bất kể loại dự án bạn đang sử dụng. – graumanoz

Các vấn đề liên quan