2012-05-21 30 views
5

Có một số thứ được gọi là các loại được chiếu trong WinRT. Ví dụ, trong siêu dữ liệu, các IXamlType.UnderlyingType được định nghĩa là:Tài liệu loại dự kiến ​​của WinRT

TypeName UnderlyingType { get; } 

Tuy nhiên khi được sử dụng trong một ứng dụng C#, nó thay đổi như sau:

Type UnderlyingType { get; } 

Câu hỏi của tôi là - là có bất kỳ tài liệu liên quan đến các quy tắc , API, thuộc tính được sử dụng cho các ánh xạ như vậy?

+0

Không thể tìm thấy bất kỳ tài liệu nào về nó. Chỉ thấy một số video về nó trên Kênh 9 nhưng, đó có lẽ không phải là một cuộc lặn sâu đủ cho bạn? Có thể gửi cho bạn các liên kết nếu bạn thích? – ChristiaanV

+0

@ChristiaanV - liên kết sẽ rất hữu ích, cảm ơn. Tuy nhiên, một tài liệu hoàn chỉnh và chính thức về vấn đề này, Microsoft của tôi sẽ cực kỳ hữu ích và là IMHO phải. – logicnp

Trả lời

2

Đúng vậy, phép chiếu ngôn ngữ được tích hợp vào bản đồ CLR Các loại WinRT thành kiểu CLR tự động. Tài liệu là khó để đi qua, đặc biệt là ngay bây giờ khi điều này vẫn còn nguyên liệu beta. Nhưng có một giấy trắng tuyệt vời có sẵn mô tả một số khía cạnh của phép chiếu CLR. Tải xuống là (hiện tại) available here (Lưu ý: Tệp .docx Word)

1

Đây là liên kết tôi đã nói về một video trên Kênh 9 http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-874T Xin lưu ý rằng đây là video về hội thảo Xây dựng dựa trên Bản xem trước dành cho nhà phát triển. Tôi không thể dự đoán có bao nhiêu thông tin này đã thay đổi với Bản xem trước người tiêu dùng.

Tôi đồng ý rằng cần có tài liệu về cách hoạt động của tính năng này. Hy vọng rằng họ sẽ sớm cập nhật tài liệu trên MSDN.

2

Khi siêu dữ liệu cửa sổ được tạo bằng công cụ cấp thấp (MIDL với công tắc/winrt và MDMERGE), bất kỳ nơi nào trong hội đồng thường sử dụng typedef, typedef được thay thế bằng typerefs trỏ vào bên trong cùng một assembly.

Điều đó cho phép CLR ghi lại nội dung của tệp winmd thay thế loại thời gian chạy Windows bằng loại CLR tương ứng. Ví dụ đơn giản nhất là kiểu Windows.Foundation.Uri được thay thế bằng System.Uri thành các ứng dụng C#. CLR biết nội bộ cách ánh xạ giữa W.F.Uri và S.Uri và nó tự động thực hiện bản dịch này cho bạn.

Tất cả điều này được xử lý tự động bởi hệ thống, có quy tắc cho nó, nhưng tôi không tin rằng quy trình là nhà phát triển có thể kiểm soát được - Tôi tin rằng ánh xạ kiểu được ghi vào triển khai CLR.

+0

Cảm ơn thông tin. OK của nó, nhưng nếu quá trình này không phải là dev-controlable, nhưng tài liệu của quá trình chính nó sẽ là tuyệt vời! – logicnp

0

Họ nói rằng mã nguồn là tài liệu tốt nhất. Trong trường hợp này, nó có vẻ là tài liệu duy nhất. Dưới đây là những phát hiện của tôi từ gameunking thông qua nguồn .NET.

Danh sách dự báo siêu dữ liệu được mã hóa trong .NET source using a macro iterator.

Tiêu đề này được bao gồm ở nhiều nơi khác nhau, nơi nó được chuyển đổi thành cấu trúc dữ liệu cho nhiệm vụ trong tầm tay. Nơi dễ tiếp cận nhất đối với chúng tôi mà tôi đã tìm thấy nằm trong số WinMD metadata importer và số adapter của chúng tôi. Từ nguồn:

// This metadata importer is exposed publically via CoCreateInstance(CLSID_CorMetaDataDispenser...). 
// when the target is a .winmd file. It applies a small number of on-the-fly 
// conversions to make the .winmd file look like a regular .NET assembly. 

mất của tôi là bạn có thể sử dụng để tạo ra một CoCreateInstance(CLSID_CorMetaDataDispenser...)IMetaDataDispenser, gọi OpenScope() với IID_IMetaDataImport với một tập tin .winmd để có được những nhà nhập khẩu siêu dữ liệu. Sau đó, nó sẽ thực hiện các chuyển đổi như IMap đến IDictionary cho bạn khi bạn nghiên cứu siêu dữ liệu. Tôi suy đoán, nhưng tôi khá chắc chắn đó là những gì Visual Studio hiện khi tạo các định nghĩa kiểu từ siêu dữ liệu hoặc triển khai giao diện.

Bạn cũng có thể bao gồm tiêu đề với trình biến đổi macro vào dự án C/C++ của riêng bạn và chuyển đổi dữ liệu trong đó thành bất kỳ biểu mẫu nào hữu ích nhất cho bạn, ví dụ: tạo mã từ nó.

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