2010-02-24 31 views
5

Tôi có một cây lớp, chứa nhiều đối tượng trong một hệ thống phân cấp. Vì vậy, tôi có thể có một đối tượng Container, nơi lưu trữ 3 đối tượng SubContainer, do đó lưu trữ một số lượng tùy ý các đối tượng Item.Sử dụng truy vấn kiểu XPath với Reflection

Có cách nào để có thể sử dụng biểu thức kiểu XPath trên cây đối tượng này, có nghĩa là phản ánh, để tôi có thể truy vấn thuộc tính của lớp với biểu thức kiểu XPath, để mã trông cái gì đó như:

object o = Container.Query("/Container/SubContainer[1]/Item[1]/@ItemProperty"); 

Rõ ràng đó là hoàn toàn tạo thành và có lẽ không phải là cú pháp XPath hợp lệ, nhưng nó chỉ là illustratory để cung cấp cho bạn một ý tưởng về những gì nó là tôi đang tìm kiếm.

Chỉnh sửa -> Lý do tôi muốn truy vấn theo cách này là do đường dẫn đến đối tượng không cố định và do đó cần được người dùng ứng dụng định cấu hình.

Cảm ơn.

+0

http://stackoverflow.com/questions/371807/traversing-an-arbitrary-c-sharp-object-graph-using-xpath-applying-xsl-transforms – user1709408

Trả lời

4

tôi đã cùng một loại vấn đề, vì vậy đã viết một loại đơn giản của phần mở rộng để truy vấn đối tượng sử dụng phản ánh

http://code.google.com/p/antix-software/wiki/AntixReflectionQuery

Nếu nó không thực hiện chính xác những gì bạn cần, nó sẽ ít nhất là một bắt đầu

0

Bạn có thể viết một phương thức tiện ích mở rộng để Kiểm soát có chuỗi như bạn mô tả.

Bạn sẽ phải viết trình phân tích cú pháp cho nó và sử dụng nó để thực hiện truy vấn thực tế.

+0

Tôi biết rằng, mặc dù nó sẽ không một điều khiển mà tôi muốn mở rộng, nó sẽ là Object. Nhưng những gì tôi hỏi là nếu có thực sự là một cái gì đó tồn tại hiện nay, giống như JXPath cho Java (http://commons.apache.org/jxpath/). –

+0

@Matt Whitfield - Tôi không quen thuộc với bất kỳ thứ gì thuộc loại này, nhưng ai đó có thể biết. – Oded

+0

Cảm ơn bạn đã nhập! :) –

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