2009-07-22 35 views
5

Có thư viện nào (như dự án mã nguồn mở, v.v.) giúp dễ sử dụng sự phản chiếu phức tạp hơn như tạo đối tượng hoặc lớp học đang bay, kiểm tra cá thể, v.v ...?C# Thư viện để dễ phản xạ động

Cảm ơn

+0

Bạn có nghĩa là, ngoài các loại trong không gian tên System.Reflection? –

+0

Có, một cái gì đó giống như một wrapper xung quanh họ để giảm bớt nhiệm vụ thực hiện các nhiệm vụ phản ánh khó khăn nhất – pistacchio

+0

Bạn có thể mô tả một số các nhiệm vụ phản ánh khó khăn này? – Trap

Trả lời

4

có một LinFu thư viện có sẵn mà có thể làm rất nhiều chất liệu thú vị khác hơn là phản ánh ... thử nó

0

MS lắp ráp đơn vị kiểm tra có PrivateObject và PrivateType mà làm cho truy cập vào tin dụ/loại thành viên khá thẳng về phía trước.

+0

Mặc dù, sử dụng thử nghiệm bên ngoài này là một ý tưởng khủng khiếp, kinh khủng ... –

+0

Nó chỉ là một trình bao bọc cho những gì bạn có thể thực hiện thông qua sự phản chiếu, vì vậy nó thực sự không có gì đặc biệt, nhưng tôi đồng ý rằng bạn không nên gây rối với nội dung riêng tư/loại. –

2

Theo ý kiến ​​của tôi, tôi không nghĩ rằng sự phản chiếu có thể dễ sử dụng hơn bây giờ. Hầu như tất cả các chức năng cốt lõi được bao bọc trong lớp Type. Chỉ cần dành thời gian của bạn để tìm hiểu về cách nó hoạt động và bạn sẽ không cần một lớp không cần thiết trên đầu trang của nó.

Cụ thể, bạn có thể làm 'những điều phức tạp' như tạo các đối tượng unitialized như thế này:

// Instantiates an uninitialized object of the specified type. 
var newObject = (MyObject)FormatterServices.GetUninitializedObject(elementType); 
+0

Vâng, một số bộ nhớ đệm (của thông tin thu được bằng cách phản ánh) sẽ được tốt đẹp. Phản ánh là khá chậm và lấy cùng 'MethodInfo' hoặc 'FieldInfo' nhiều lần là một con heo tài nguyên. (Tôi biết câu trả lời của bạn khá cũ ...) –

1

Phản ánh theo định nghĩa cứng. Đó là một mức độ vô hướng được đặt trên toàn bộ cấu trúc đối tượng. Tôi không thực sự chắc chắn làm thế nào bạn có thể làm cho nó dễ dàng hơn, mà không giới hạn sức mạnh của nó.

1

Nếu phản ánh khó, thì có thể bạn không hiểu đầy đủ các khái niệm cơ bản về .Net. Bạn có thể muốn thử một hướng dẫn như this.