2010-04-26 35 views
9

Phản ánh trong C# là gì? Chúng ta sử dụng khái niệm này trong các ứng dụng của chúng ta ở đâu?Phản ánh trong C# là gì? Chúng ta sử dụng khái niệm này trong ứng dụng của mình ở đâu?

+1

Lần truy cập đầu tiên không quá tệ: http://www.google.com/search?q=what+is+reflection+in+c%23+%3F+where+we+use+this+concept + trong + + ứng dụng của chúng tôi% 3F –

+2

Tôi mơ hay tiêu đề của câu hỏi dài hơn câu hỏi? – ereOn

+7

@ 0xA3: Tôi chắc chắn rằng phản ứng đầu gối của chúng tôi đối với một người nào đó hỏi câu hỏi giới thiệu về StackOverflow không phải là "tự mình sử dụng Google" hoặc "RTFM". –

Trả lời

16

Phản ánh cung cấp các đối tượng (loại Type) đóng gói các cụm, mô-đun và loại. Bạn có thể sử dụng sự phản chiếu để tạo động một thể hiện của một kiểu, liên kết kiểu với một đối tượng hiện có, hoặc lấy kiểu từ một đối tượng hiện có và gọi các phương thức của nó hoặc truy cập các trường và thuộc tính của nó. Nếu bạn đang sử dụng thuộc tính trong mã của bạn, phản xạ cho phép bạn truy cập chúng ...

Để tham khảo, MSDN article on reflection và Dự án Luật có reflection khá tốt giải thích ..

Ví dụ, có một cái nhìn tại C# Reflection Examples.

+0

nơi chúng tôi sử dụng này? U có thể cho tôi ứng dụng đó không ?? – HITESH

+0

@Hitesh Bạn có thể sử dụng nó với các hội đồng ... Bài viết có một số ví dụ hay ... –

+0

tôi nghĩ rằng nên đặt * COURTESY * –

5

Từ documentation:

Reflection cung cấp các đối tượng (kiểu Type) mà đóng gói lắp ráp, module và các loại. Bạn có thể sử dụng phản chiếu để tự động tạo một thể hiện loại, liên kết loại đối tượng hiện có hoặc nhận loại từ đối tượng hiện có và gọi phương thức hoặc truy cập vào các trường và thuộc tính . Nếu bạn đang sử dụng các thuộc tính trong mã của mình, hãy phản ánh cho phép bạn truy cập chúng. Để biết thêm thông tin , hãy xem Thuộc tính.

Wikipedia nói điều này:

Trong khoa học máy tính, phản ánh là quá trình mà theo đó một chương trình máy tính có thể quan sát và sửa đổi cấu trúc và hành vi của chính mình. Mô hình lập trình được điều khiển bởi sự phản ánh được gọi là lập trình phản chiếu . Nó là một loại cụ thể của metaprogramming.

Ví dụ, nếu bạn muốn lập trình hiển thị tất cả các phương pháp của một lớp, bạn có thể làm điều đó như vậy:

using System; 
using System.Reflection; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      var t = typeof(MyClass); 

      foreach (var m in t.GetMethods()) 
      { 
       Console.WriteLine(m.Name); 
      } 
      Console.ReadLine(); 
     } 
    } 


    public class MyClass 
    { 
     public int Add(int x, int y) 
     { 
      return x + y; 
     } 

     public int Subtract(int x, int y) 
     { 
      return x - y; 
     } 
    } 
} 
+0

nơi chúng tôi sử dụng ? u có thể cho tôi ứng dụng đó không ?? – HITESH

+0

@HITESH Tôi đã thêm một ví dụ. –

0

Bạn có câu trả lời ở trên phản xạ là gì, một số trường hợp tôi đã sử dụng nó trong quá khứ:

  • một phương pháp chung chung mà mất trong một danh sách các thuộc tính và bản sao những tài sản trong một đối tượng khác
  • một phương pháp sử dụng mô tả để nhận văn bản cho enum, tương tự như this

Cũng xem this article để biết ví dụ về phản ánh, liên kết thêm ở cuối trang.

+0

cảm ơn vì đã cho tôi liên kết như vậy, nhưng 1 câu hỏi là khi chúng tôi thêm làm không gian tên trong trang .cs đơn giản hoặc một số trang khác? plz nói với tôi điều đó? – HITESH

+0

Xin lỗi, tôi không chắc ý bạn là gì. Không gian tên để phản chiếu là System.Reflection. Ý bạn là vậy đúng không? – Fermin

2

Một cách sử dụng sự phản chiếu bạn sẽ tìm thấy trong các khung công tác: để thực hiện một chức năng cụ thể (trong khuôn khổ đó), một số lớp được sử dụng. Nhưng lớp chính xác không được biết ở thời gian biên dịch, thay vào đó nó được cấu hình trong một số tệp văn bản, như tên lớp (thường bao gồm cả assembly).Sử dụng sự phản chiếu, bạn có thể lấy chuỗi này và tạo một thể hiện của lớp đó.

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