2012-06-28 18 views
5

RavenDB có thể tuần tự hóa tất cả các thuộc tính công khai, riêng tư và được bảo vệ trên bất kỳ đối tượng C# nào, thậm chí không có bất kỳ thuộc tính tuần tự hóa nào.Làm thế nào để đọc và thiết lập các trường riêng tư mà không có một hit hiệu suất trong C#?

Tôi biết rằng điều này có thể được thực hiện với sự phản ánh, nhưng điều đó sẽ có một số vấn đề về hiệu suất. Có cách nào hiệu quả hơn để đạt được điều này?

Để sử dụng tính năng tuần tự được tích hợp sẵn trong .NET yêu cầu chú thích hoặc triển khai một số giao diện tuần tự hóa, trong khi RavenDB có thể tuần tự hóa bất kỳ đối tượng nào đến và từ JSON.

Tôi quan tâm nhiều hơn đến công nghệ mà nó sử dụng chứ không phải RavenDB cụ thể.

+11

Không. Chỉ cần không. Họ là tư nhân vì một lý do. – Oded

+1

Mục tiêu bạn đang cố đạt được là gì? Các biến đó là riêng tư vì một lý do; tại sao bạn đang cố gắng phá vỡ thiết kế? – ean5533

+0

Im quan tâm đến cách thực hiện điều này, để hiểu cách RavenDB và các giải pháp khác hoạt động như thế nào. – Olsenius

Trả lời

1

Nếu đặt thuộc tính thông qua phản ánh quá chậm, bạn có thể tạo các phương thức động đặt thời gian chạy. Điều này có thể được thực hiện bằng cách sử dụng Relection.Emit hoặc bằng cách tạo một biên dịch Expression<T>.

0

Nhìn NHibernate để lấy cảm hứng - bên cạnh các lựa chọn thay thế khác, nó cũng mang đến cho bạn cơ hội thể hiện các thuộc tính nào vẫn tồn tại bằng cách sử dụng giao diện. Dưới các đối tượng bao bọc mui xe thực hiện các giao diện không thay đổi xử lý.

Xem ví dụ NHibernate Reflection Optimizer - what does it do?

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