Đưa ra một số nhận xét, hãy để tôi cung cấp câu trả lời thay thế. Câu hỏi ban đầu được hỏi tại sao XmlDocument không động trong .NET 4. Trong khi nó có thể thêm khả năng đặc tính "expando" vào các lớp tài liệu xml hiện có thông qua IDynamicMetaObjectProvider
, làm như vậy có thể là một nỗ lực không tầm thường. Làm cho mô hình đối tượng Xml ban đầu từ System.Xml hoàn toàn năng động sẽ yêu cầu một số sửa đổi mở rộng của khuôn khổ Xml và sẽ yêu cầu IDynamicMetaObjectProvider đó được thêm vào mọi đối tượng có liên quan. Điều đó bao gồm XmlDocument, XmlElement, XmlAttribute, XmlNode và tất cả các loại nội dung xml khác như nhận xét, nút văn bản, v.v. Ngoài ra, một số lượng đáng kể cơ sở hạ tầng hỗ trợ, loại nội bộ, v.v ... có liên quan đến việc tra cứu và xử lý các phần tử và thuộc tính và giá trị cũng sẽ cần phải được sửa đổi (mở Reflector, và xem System.Xml ... hơn một nửa các kiểu là nội bộ, và chúng tất cả đều phụ thuộc lẫn nhau với nhau và các kiểu công khai có sẵn .)
Điều quan trọng là phải xem xét phạm vi thích hợp của việc triển khai thuộc tính expando cho Xml trong .NET. Bạn sẽ dừng lại ở chỉ các XmlDocument và các loại liên quan? Hoặc sẽ thích hợp hơn để bao gồm XPath, Lược đồ Xml, v.v ...?
Để trả lời câu hỏi gốc, "Tại sao không phải là XmlDocument động trong .NET 4?", Tôi nghĩ câu trả lời đơn giản là: Triển khai API đầy đủ 'động' hoặc trong trường hợp Xml tại đây, API cung cấp mở rộng tài sản của các tài liệu xml tùy ý, là một nhiệm vụ tầm thường. Với đạo đức làm việc của Microsoft, nó có ý nghĩa hợp lý rằng họ sẽ không tiếp cận một nhiệm vụ như vậy một cách nhẹ nhàng, và nếu họ cố gắng thực hiện các thuộc tính mở rộng cho khung công tác Xml, tôi hy vọng nó sẽ được thực hiện với cùng mức độ chú ý và chăm sóc cẩn thận họ cung cấp cho phần còn lại của .NET.
Nếu bất kỳ loại nào sẽ bị thay đổi, nó sẽ là XDocument chứ không phải XmlDocument. –
Ngoài ra, câu trả lời cho câu hỏi này có dành riêng cho C# không? –
AFAIK, 'dynamic' là một tính năng của C#, do đó, vâng, cụ thể cho C#. – svick